Click to return to the Essentials home page    
Web Workshop  |  Essentials

Knowledge Is Power: Inside the Microsoft KB


Jason Strayer
Support Engineer
Microsoft Corporation

January 9, 1998

The following article was originally published in Site Builder Magazine (now known as MSDN Online Voices).

You're a Web developer. You're working day and night to design a site that takes advantage of some of the cool technical features of Internet Explorer: ActiveX controls with automatic download, Dynamic HTML scripting, a channel using Active Channel technology, an Active Desktop item, maybe even a Microsoft Foundation Classes (MFC) active document server or a Visual Basic® User Document hosted inside the Internet Explorer frame. You think you've got a set of Web pages that would make the Web Men bow down before you like scared peasants before the Volcano God.

But you've got a problem. A simple problem. Something so obvious, you're amazed no one else has run into this problem before. Maybe you think you've found an Internet Explorer bug that's trashing your well-worked code. Or maybe you just want to know how to do something simple, but you've searched and searched to no avail. You're frustrated, tired, and out of Mountain Dew. Where can you go for fast relief?

Fret no more, bubba. The first, best hope for developers working with Microsoft technologies in our time is the Microsoft Knowledge Base (KB), a central feature of the new Microsoft Support Non-MSDN Online link site. The KB is populated with hundreds of thousands of articles that attempt to provide exactly what you seek: the answers to common questions and documentation of known bugs, with possible programmatic workarounds. The KB is a treasure trove of support, and should be the first place you go before hitting the newsgroups, submitting a Web response service request, or making a direct call to us in Developer Support.

KB articles are tightly focused bundles of knowledge. They are designed to address a specific concern, be it a bug, a problem, or a common question. KB articles follow a regular, predictable format, and are generally very simple and to the point. The goal here is to place the things Microsoft support engineers know in a database you can search for quick answers.

Mind your Q's

All KB articles have what is known as a "Q number." Whatever "Q" stands for has been lost in antiquity; however, I wouldn't be surprised if it were some oblique Star Trek reference. In the KB, the Q number uniquely identifies a particular KB article. If you ever get a Q number as the answer to a question in e-mail, on a newsgroup, or when talking to a Microsoft support engineer, go directly to the Knowledge Base and do not pass Go. Search for the Q-number across all products, and you should be rewarded with a links to that KB article and any other KB articles that reference it. (If you're lost, hold on to your shorts; I'll get to the searching part in a bit.)

Five Flavors of KB Articles

Of the many types of KB articles, Internet developers will generally be most interested in five: PRB, BUG, FIX, FILE, and HOWTO.

PRB, or "Problem," articles discuss typical programmer coding errors, or product-design issues that appear to be bugs but really aren't. PRB articles demonstrate proper workarounds, or explain why a given technique is not supported. On the other hand, BUG articles discuss accidental flaws that Microsoft knows about and is investigating for a possible future fix. BUG articles usually have workarounds, too -- but we admit the correct place to fix the problem is in the product itself, not your code. If and when a commonly experienced bug is fixed, the BUG article will metamorphose into a FIX article, much as an ugly pupa might change into a graceful butterfly. When dealing with Internet Explorer issues, FIX articles generally hang around in the KB as subtle reminders that the user should upgrade to the newest release.

While PRB, BUG, and FIX articles are about solving a problem in a piece of code; HOWTO and FILE articles are about answering a question before you even get to the problem-solving stage. HOWTO articles demonstrate a simple technique with a set of steps or a brief smidgen of inline code. For example, if you wanted to know how to tie your shoe or check the browser version from script, you'd look for a HOWTO article. FILE articles are pointers to sample code stored in the Microsoft Software Library Non-MSDN Online link (ftp://ftp.microsoft.com/softlib/mslfiles/). Since the "Softlib" is nothing more than a big storage center for thousands of self-extracting archives, you'll need the FILE pointer article to figure out the name of the file you need. (Think of those massive warehouses Mulder keeps finding during season-ending cliffhangers on television's The X Files.) FILE articles, and the samples behind them, are penultimate to HOWTO articles; most developers are far happier when you just shut up and show them the code.

How to Search for a KB Article

Searching for a KB article is fast and easy. Just fire up your browser and navigate to http://support.microsoft.com/support/ Non-MSDN Online link. (If you're already surfing http:www.microsoft.com, just click on the SUPPORT button in the omnipresent Microsoft page header.) You may be asked to fill out simple registration forms similar to Site Builder Network's before you can access content. If so, after filling out the forms, you'll be at the top-level of the Microsoft support site, and you can immediately begin a full-text search of all Microsoft KB articles.

For Internet Client development, you'll generally want to search one of three product names: "Internet Explorer Development," "Internet Client SDK," or "ActiveX Software Development Kit." Each KB article has one or more products associated with it, as identified in the article's "applies-to" header:

This article would involve MFC versions 4.2 through 5.0 and "Microsoft Internet Explorer (Programming), version 4.0" (which is the full name for the product search of "Internet Explorer Development.")

When searching for a specific article by its Q number, it is best to select "All Products" as the product to search against. KB articles often fit multiple categories, making it hard to guess under which product the article is stored.

To help focus your search, KB articles have a set of keywords that let you key-in the type of article you want. Each of the article types explained above has a corresponding category keyword. For example, a search can be limited to HOWTO articles by using "kbhowto" as a search word. For a complete list of category keywords, refer to KB article Q94671 Non-MSDN Online link.

There are even keywords specific to the various Internet technologies. For example, use "AXSDKWebBrowser" to obtain a listing of articles related to the Web Browser control. The existing set of these keywords is listed in Q156628 Non-MSDN Online link.

Keywords for an article show up in the article footer. Here is an example:

Keywords          : AXSDKDocObjects
Technology        : kbInetDev kbole
Version           : WINDOWS:4.0; WINNT:4.2,4.2b,5.0
Platform          : WINDOWS winnt
Issue type        : kbbug kbfile

Ten Selected KB Articles for Internet Client Development

Now that you know what the KB is and how to use it, here are 10 KB articles that cover problems related to Internet-client technologies. Most have been selected because of their popularity, but I've chosen a few others to illustrate the diversity of answers you can get from the KB.

PRB: "Permission Denied" When Scripting Across Frames (Q167796 Non-MSDN Online link)

The security features of Internet Explorer have improved with each subsequent release. In Internet Explorer 4.0, as with Netscape Communicator, the scripting security model was tightened to prevent some of the security violations you've probably seen in the news over the past year. This means malicious Web sites have no known ways to snoop on a user's browsing choices or filch credit-card information via, say, a hidden frame. This means that, for the good-natured developer, that script is much more restricted in functionality spanning multiple Web servers. If your Web pages are now getting "Permission Denied" or "Access Denied" messages, this KB article explains why and suggests alternatives.

PRB: Keystroke Problems in CView/CWnd WebBrowser Control (Q165074 Non-MSDN Online link)

If you're writing an application using MFC, and it hosts the Web Browser Control, you may experience strange problems with keystrokes. Tabbing between elements on an HTML form or typing text into HTML-input elements might fail. This article has a quick and painless resolution to most of these problems.

HOWTO: Packaging MFC Controls for Use over the Internet (Q167158 Non-MSDN Online link)

Together with Q165075 Non-MSDN Online link and Q169438 Non-MSDN Online link, this article has become one of the primary references for packaging your own Internet ActiveX controls. Much of this information now exists in the Web Workshop, but these three KB articles are still worthwhile references for any problems you might have with code download and INF file generation. In particular, if you've created an MFC ActiveX control, you don't get Visual Basic's easy-to-use Setup Wizard to do all your CAB packaging for you. Q167158 provides a sample INF and instructions to help you create your own INF and CAB files, just as the Setup Wizard does for Visual Basic ActiveX controls.

FIX: Access Violation on Transition Property of Blend Transition (Q176791 Non-MSDN Online link)

Here is a FIX article for a bug that was recognized in the release version of Internet Explorer 4.0 and subsequently fixed for the version 4.01 update Non-MSDN Online link. In this case, attempting to set the transition property on a blend transition causes Internet Explorer 4.0 to blow code chunks. Although it isn't technically correct to set this property on the blend transition, the result should be a script error, not a full browser crash.

FILE: Specifying FileVersion and #Version for Component Download (Q167597 Non-MSDN Online link)

When using the <OBJECT> tag to auto-download an object, such as an ActiveX control, to a client machine, the Web developer should specify a CODEBASE attribute to help the browser automatically find and download the proper CAB, DLL, or INF file to install on the client machine. When using the CODEBASE attribute, the developer should usually also include version information, especially when an object is expected to be versioned multiple times. This KB article describes the logic behind the #Version specifier on the CODEBASE attribute and points to a sample program that demonstrates how to determine the version of installed files Internet Explorer checks against the #Version specified. If there seem to be problems with the update of objects with newer versions on some of your client machines, this KB is worth a look-see.

BUG: Cannot Navigate Away from MFC Active Document in Internet Explorer 4.0 (Q177551 Non-MSDN Online link)

Here's a longstanding bug in MFC that was uncovered by some active document-hosting code introduced in Internet Explorer 4.0. Rumor has it that this problem will get fixed in a future release of Visual C++, or possibly even a service pack. Until that happens, however, all of your MFC-based active document applications will hang when hosted in Internet Explorer 4.0 or 4.01. Actually, the active document server will work fine until Internet Explorer is told to navigate away from it. This KB article details the recommended method for fixing the problem, and points to a sample file in the Softlib that demonstrates the rather complex fix.

INFO: Accessing the Object Model from Within an ActiveX Control (Q172763 Non-MSDN Online link)

I didn't discuss the INFO category of KB article earlier, because it is rarely used. Think of it as an extended HOWTO, which is appropriate in this case. Q172763 shows "how to" access the HTML object model from an ActiveX control object on a Web page. Because ActiveX controls can do whatever script can do, and ActiveX controls have the advantages of speed and protection of source code, sometimes an ActiveX control is a viable alternative to using plain script. Refer to this article for the first step in using an ActiveX control to access the HTML or DHTML object model of Internet Explorer 3.0 or 4.0.

HOWTO: Connecting to a Running Instance of Internet Explorer (Q176792 Non-MSDN Online link)

One of the most common Internet Explorer development questions is, "How do I get a reference to the current Internet Explorer browser using Visual Basic's GetObject?" The answer for Internet Explorer 3.0 was pretty quick: You can't. In Internet Explorer 4.0, GetObject still does not work -- for a variety of technical reasons. However, Internet Explorer 4.0 introduces alternatives via the ShellWindows enumeration. Q176792 discusses how to use this object to find current Internet Explorer instances, as well as some limitations of this method.

HOWTO: Determining Browser Version from a Script (Q167820 Non-MSDN Online link)

Here is an old standby. While this information is available in many places, it is so commonly sought that it merited creation of a KB article for easy searching. The summary of the article is clear: "With the new features that Internet Explorer 4.0 provides, it may be desirable for both client-side and server-side scripts to determine the browser version, so that a Web application can either take advantage of new functionality, or degrade gracefully, depending on the version of the currently-running browser."

PRB: IE Reports Unknown Type .VBD for ActiveX Document (Q167380 Non-MSDN Online link)

Here is one of the most-used Internet Client KB articles. When Visual Basic 5.0 introduced User Documents, Web developers could suddenly take legacy Visual Basic applications and create working, Web-like applications for use in Internet Explorer. User Documents have the benefit of an almost seamless user navigation experience between the Visual Basic forms and HTML forms, as well as automatic code download of the Visual Basic binary. Unfortunately, the automatic code download of the User Document is prone to many confusing developer errors which are difficult to track down and many of which generate the same error message: "Internet Explorer is opening file of unknown type: <Name of Document>.VBD… ." This article lists the nine known major causes of this error. If you're getting this error with your User Document files, you should definitely test these nine possibilities thoroughly.

FAQs (Q158264 Non-MSDN Online link, 167435 Non-MSDN Online link)

Any list of KB articles would not be complete without a reference to the FAQ for the technology. The ActiveX SDK, which was the SDK for Internet Explorer 3.0, has an FAQ, which you can reference with Q number Q158264 Non-MSDN Online link. The contents of this FAQ are not likely to change. On the other hand, the FAQ for the Internet Client SDK, the replacement to the ActiveX SDK and the best documentation on development for Internet Explorer 4.0, will likely continue to grow as new questions emerge on the latest release. This FAQ can be read by finding KB Q167435 Non-MSDN Online link or by visiting http://support.microsoft.com/support/inetsdk/faq/ Non-MSDN Online link.

Jason Strayer works on the Internet Client team in Microsoft Developer Support. He has been known to frequent theaters, coffee shops, brewpubs, bookstores, and other places of ill repute.


Where KBs come from

You probably think KB articles are sent directly from Heaven to cure the plight of you, the devoted developer. Despite their amazingly beneficent nature, KB articles are not of divine creation. Developer-oriented KB articles are written by the very support personnel you talk to if you call the Microsoft support telephone lines.

Articles are assigned according to customer demand. Questions asked repeatedly over the phone lines, in Web-response service requests, or on public peer-to-peer Microsoft newsgroups are good candidates. Known bugs that users are experiencing regularly are also good candidates. KB articles help us in Developer Support to reach as many users as possible with a piece of information. We use the KB ourselves as the first step in researching a case.

If you have a problem that isn't covered in a KB article, and you need immediate, one-on-one help in resolving the issue, your best bet is to contact Microsoft Technical Support for assistance. There are several ways of going about this, such as "Web Response." Walk around in the Microsoft Support site Non-MSDN Online link to find more information on direct options.


For technical how-to questions, check in with the Web Men Talking, MSDN Online's answer pair.


Back to topBack to top

Did you find this material useful? Gripes? Compliments? Suggestions for other articles? Write us!

© 1999 Microsoft Corporation. All rights reserved. Terms of use.