A hyperlink that is specified to open in a 32-bit instance of Internet Explorer 8 opens in a 64-bit instance of Internet Explorer 8

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?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×