Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

In Internet Explorer 7, you cannot use an application to programmatically enumerate Internet Explorer 7 instances in a desktop other than the default desktop


View products that this article applies to.

Important This article contains information about how to modify the registry. Make sure that you back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 (http://support.microsoft.com/kb/322756/ ) How to back up and restore the registry in Windows

↑ Back to the top


Symptoms

Consider the following scenario:
  • On a computer that has Windows Internet Explorer 7 installed, you create a new desktop.
  • You use an application to programmatically enumerate the Internet Explorer 7 instances that are opened in this desktop.
In this scenario, the application cannot correctly enumerate these Internet Explorer 7 instances.

Note This problem does not occur in Microsoft Internet Explorer 6.

↑ Back to the top


Cause

This issue occurs because of a change in behavior in Internet Explorer 7.

In Internet Explorer 6, the ShellWindows object is associated with the following CLSID:
{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
This object is a COM local server that exists for each desktop. When you use the CoCreate function to create a ShellWindows instance, the instance is bound to the server on the desktop where you create the instance. Therefore, the application can enumerate the Internet Explorer 6 windows in all desktops.

In Internet Explorer 7, the
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\
subkey is added together with the RunAs registry entry. And the value of the RunAs registry entry is set to Interactive User. This change in behavior for Internet Explorer 7 causes the ShellWindows instance to be bound to the server on the default desktop even if you create the instance in other desktops.

↑ Back to the top


Workaround

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

Workaround for Windows XP and for Windows Server 2003

To work around this issue in Windows XP or in Windows Server 2003, follow these steps:
  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate the following registry subkey, and then click it:
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
  3. Delete the AppID registry entry.
  4. Exit Registry Editor.

Workaround for Windows Vista

To work around this issue in Windows Vista, follow these steps:
  1. Install the MS07-033 cumulative security update for Internet Explorer (KB933566), or install a later cumulative security update for Internet Explorer. For more information about the MS07-033 cumulative security update, click the following article number to view the article in the Microsoft Knowledge Base:
    933566� MS07-033: Cumulative Security Update for Internet Explorer
  2. Install update KB935855.

    Notes
    • This update enables Internet Explorer 7 to run on a desktop other than the default desktop.
    • After you install this update, the FEATURE_MULTI_DESKTOP registry entry will be added under the following registry subkey:
      HKLM\Software\Microsoft\Internet Explorer\Low Rights
      The value of this registry entry is 1.
    • After you install update KB935855, the AppIDFlags registry entry will be added under the following registry subkey:
      HKLM\Sofware\Classes\AppID\{60EE1F45-C0DD-4A1F-AA44-D97424600A16}
      The value of this registry entry is 1.
  3. Restart the computer.

↑ Back to the top


Status

This behavior is by design.

↑ Back to the top


More information

A desktop is a securable object that has a logical display surface. A desktop may contain user interface items such as windows and menus. For more information, visit the following Microsoft Developer Network Web site:For more information about the AppID registry entry, visit the following Microsoft Developer Network Web site:

↑ Back to the top


Keywords: KB940998, kbprb, kbexpertiseadvanced, kbtshoot

↑ Back to the top

Article Info
Article ID : 940998
Revision : 3
Created on : 10/31/2007
Published on : 10/31/2007
Exists online : False
Views : 589