Applies To
Internet Explorer 8 Windows 7 Windows Server 2008 R2

Symptoms

Consider the following scenario:

  • You have Windows Internet Explorer 8 installed on a computer that is running a 64-bit version of Windows 7 or of Windows Server 2008 R2.

  • You run a 32-bit version of an application on this computer.

  • The application hosts the web browser control to open hyperlinks in specified bit versions of Internet Explorer 8 by using the CoCreateInstance function. The bit version of Internet Explorer 8 that is started depends on the protected mode status of the hyperlink.

In this scenario, the application does not work correctly and the 32-bit version of Internet Explorer 8 is not started as expected. Instead, the 64-bit version of Internet Explorer is started regardless of the predefined configuration.For example, you develop an application that works as follows:

  • If you open a hyperlink that is included in the Internet security zone, the 32-bit version of Internet Explorer 8 is started.

    Note By default, the protected mode is enabled in the Internet security zone.

  • If you open a hyperlink that is included in the Local intranet security zone or in the Trusted sites security zone, the 64-bit version of Internet Explorer 8 is started.

    Note By default, the protected mode is disabled in the Local intranet security zone and in the Trusted sites security zone.

In this example, the 64-bit version of Internet Explorer is started regardless of the protected mode status of the hyperlink.

Cause

This issue occurs because no 32-bit handler for the InternetExplorerMedium class identifier (CLSID) is registered. An application calls the CoCreateInstance function to create a 32-bit instance of Internet Explorer 8 in a 64-bit version of Windows 7 or of Windows Server 2008 R2. This operation fails when there is no 32-bit handler for the InternetExplorerMedium CLSID in the running operating system. In this scenario, the CoCreateInstance function creates a 64-bit instance instead. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

975377 You cannot use the CoCreateInstance function to create an instance of the 32-bit version of Internet Explorer on a computer that is running the 64-bit version of Windows 7

Resolution

Security update information

To resolve this problem, install the most recent cumulative security update for Windows Internet Explorer. To do this, visit the following Microsoft website:

http://update.microsoft.comFor more technical information about the most recent cumulative security update for Windows Internet Explorer, visit the following Microsoft website:

http://www.microsoft.com/technet/security/current.aspxNote This update was first included in security update 2360131 (MS10-071). For more information, click the following article number to view the article in the Microsoft Knowledge Base:

2360131 MS10-071: Cumulative security update for Internet Explorer

Workaround

To work around this issue, use one of the following methods.

Method 1

Start a 32-bit instance of Internet Explorer 8 before you open a hyperlink in the 32-bit application. In this scenario, link activation occurs in the existing 32-bit instance of Internet Explorer 8.

Method 2

Modify the HKEY_CLASSES_ROOT registry hive to add the missing handler for the InternetExplorerMedium CLSID. To do this, type the following command at a command prompt and then press ENTER:

Reg add "HKCR\Wow6432Node\CLSID\{D5E8041D-920F-45E9-B8FB-B1DEB82C6E5E}\LocalServer32" /ve /t REG_EXPAND_SZ /d "%programfiles(x86)%\Internet Explorer\iexplore.exe -startmediumtab"

Method 3

Use the following PowerShell script to add the missing handler:$acl = Get-Acl HKLM:\SOFTWARE\Wow6432Node\Classes\CLSID\`{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E`} $acl.Owner $person = [System.Security.Principal.NTAccount]"Administrators" $acl.SetOwner($person) $acl.Owner $access = [System.Security.AccessControl.RegistryRights]"FullControl" $inheritance = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit" $propagation = [System.Security.AccessControl.PropagationFlags]"InheritOnly" $type = [System.Security.AccessControl.AccessControlType]"Allow" $rule = New-Object System.Security.AccessControl.RegistryAccessRule( $person,$access,$inheritance,$propagation,$type) $acl.ResetAccessRule($rule) $person = [System.Security.Principal.NTAccount]"Everyone" $access = [System.Security.AccessControl.RegistryRights]"ReadKey" $inheritance = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit" $propagation = [System.Security.AccessControl.PropagationFlags]"InheritOnly" $type = [System.Security.AccessControl.AccessControlType]"Allow" $rule = New-Object System.Security.AccessControl.RegistryAccessRule($person,$access,$inheritance,$propagation,$type) $acl.ResetAccessRule($rule) Set-Acl HKLM:\SOFTWARE\Wow6432Node\Classes\CLSID\`{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E`} $acl New-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Classes\CLSID\`{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E`} -name "AppID" -value "`{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E`}" -propertyType String New-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Classes\CLSID\`{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E`}\LocalServer32 "(default)" -value '"%ProgramFiles(x86)%\Internet Explorer\iexplore.exe" -startmediumtab"' -propertyType ExpandString For more information about how to create and implement PowerShell scripts, visit the following Microsoft website:

Information about the PowerShell command line and the scripting environment

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.