The First Run Page in Internet Explorer

Probably all web browsers have a home page or start page. This is the page that the browser is to display whenever it is started without being given an address to go to. Some users may like to start their browsing always from a particular page on the Internet, perhaps at a search engine or portal. Others may figure that since they’re going to type in a URL for the page that they actually do want to see, they don’t want to muck around with some other page first. It is pretty important, then, that the home page be configurable. It may even be something that users care about quite a lot. Some measure of this is that the Internet Properties dialog has configuration of the home page as its very first item.

The home page is also something that computer manufacturers have cared about quite a lot. They have perhaps no better way to contact you as a new customer than to configure the pre-installed Windows so that your first use of Internet Explorer takes you to their website, where you can register your purchase, give them your address, etc.

Internet Explorer has long provided for this separate configuration of a home page for ordinary use and a first home page for the very first use.

Problem

Recent versions of Internet Explorer, particularly as supplied with Windows Vista, may not immediately respect the user’s choice of home page or even the manufacturer’s configuration of a first home page. Instead, Internet Explorer insists on connecting to the Internet and going to a Microsoft website. The Internet Explorer from Windows Vista would send you to one of the following:

What’s more, this diversion is “sticky”. Unlike the first home page, you can’t just dismiss it the once and never be troubled by it again. Instead, this diversion to Microsoft continues at every startup of Internet Explorer until Microsoft’s page has been loaded and its scripts have been allowed to run. Even then, the diversion will recur from time to time until you have not only let the page load and let its scripts run but have answered its questions to Microsoft’s satisfaction.

You may have specified a home page in the Internet Options, even before running Internet Explorer. You may intend, if only for a while, just to browse files on your local computer or your secure intranet. Perhaps your computer doesn’t even have an Internet connection. (Yes, such machines do exist!) Yet you will find that Internet Explorer tries every time to take you first to a Microsoft website on the Internet. True, you can stop the page from loading and you don’t have to answer Microsoft’s questions. You can just click the home button and get to your chosen home page, but how tiresome and silly is that?

How can you tell Internet Explorer to go directly to your home page, without the side-trip to Microsoft’s website?

Solution

Knowledge of Internet Explorer’s algorithm for choosing a home page produces the following as the plausible methods for disabling this diversion to Microsoft’s website:

  1. set 1 as the DWORD of data for the registry value DisableFirstRunCustomize;
  2. set 1 as the DWORD of data for both the registry values RunOnceHasShown and RunOnceComplete;
  3. put “go.microsoft.com” into a security zone, e.g., Restricted Sites, in which running scripts is disabled.

Details of the algorithm are presented separately, in an attempt at documenting the otherwise undocumented function _GetStdLocation. Details of the relevant registry values are given later in this note.

The first of the suggested methods is the ideal solution in one sense, because it models your likely attitude. If you would like Internet Explorer not even to think of showing the First Run page, then setting DisableFirstRunCustomize to 1 tells Internet Explorer exactly what you want. On the down side is that this registry value is explicitly subject to administrative whim. If an administrator has set it differently in a higher-priority key than you are permitted to edit, then this method is entirely ineffective. That said, if you are an administrator who wants to banish the First Run page for yourself or on behalf of those in your care, then this solution may be the most convenient because Microsoft actually provides a user-interface tool.

The second method has the merit of being available to all users, at least in standard configurations of registry security. It works by convincing Internet Explorer that the First Run page has loaded successfully and has been satisfactorily completed so that it need not be shown again, even though it has in fact never been shown at all. However, it has the detraction (for some) that you will have to edit the registry.

The third method does not require any tool more sophisticated than the Internet Options in the Control Panel, but it may be frustrated by an administrator having withdrawn permission to assign sites to zones. It works because Internet Explorer knows the First Run page depends on scripting, such that showing it would be at best pointless if scripting is prohibited. Internet Explorer then sets the RunOnceHasShown and RunOnceComplete values to record that it should never again try showing the page. In Windows Vista and higher, that’s the end of it. Unfortunately, if your operating system is earlier than Windows Vista, Internet Explorer will proceed with trying to show the page once, but the diversion will never be attempted again.

Note that the benefit of the third method is obtained forever by running Internet Explorer once while go.microsoft.com is in a zone with no scripting. The relevant setting on the Security tab is called “Active scripting” and you must set it to Disable. Setting to Prompt and answering No to the prompts is not enough. Scripts are disabled by default in the Restricted Sites zone. You can move go.microsoft.com to the Restricted Sites zone or you can disable scripting in the Internet zone. Whichever you choose, you only have to keep this configuration for one run. If you move go.microsoft.com to the Restricted Sites zone but think the site is too useful to keep relegated, then just remove it from this zone once Internet Explorer starts. Mind you, surely the main reason that a Restricted Sites zone exists is to defend against sites that hijack the browser: go.microsoft.com is a model candidate.

Registry Details

The DisableFirstRunCustomize value may be in any of the following four keys, given in order of decreasing precedence:

Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main
Value: DisableFirstRunCustomize
Type: REG_DWORD
Data: 0 to show the First Run page;
1 to show the First Home Page or Start Page;
2 to show the Welcome to Internet Explorer page
Default: 0

The merit in allowing multiple locations lies in the combination of applicability and access. A setting in either of the HKEY_LOCAL_MACHINE branches applies to all users, but the same setting in either of the HKEY_CURRENT_USER branches is meant just for the current user. A setting that is stored in a Software\Policies branch or in HKEY_LOCAL_MACHINE typically cannot be modified except with administrative privilege. Note the reversal of machine and user branches when Policies is not involved. The first key, as shown above, sets a machine-wide policy, with no per-user exceptions. Even users who have write access to their own Policies branch cannot override a machine-wide policy. The last key also applies machine-wide, but to supply preferences which users are free to override.

In the first two of the keys listed above, the DisableFirstRunCustomize value has user-interface support through the Group Policy Object Editor, as “Prevent performance of First Run Customize settings” in the administrative template for Internet Explorer (shown under Windows Components).

The RunOnceComplete and RunOnceHasShown values may each be in either of two keys, again listed in order of decreasing precedence:

Key: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main
Value: RunOnceComplete
RunOnceHasShown
Type: REG_DWORD
Default: 0

Internet Explorer accepts these values in a variety of types and sizes that evaluate as boolean. However, REG_DWORD is surely to be preferred. If nothing else, it is the type that Internet Explorer chooses when setting the values.