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.

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


View products that this article applies to.

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.

↑ Back to the top


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

↑ Back to the top


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:
For more technical information about the most recent cumulative security update for Windows Internet Explorer, visit the following Microsoft website:
Note 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

↑ Back to the top


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:

↑ Back to the top


Keywords: kbqfe, kbfix, kbsurveynew, kbexpertiseadvanced, kb

↑ Back to the top

Article Info
Article ID : 2310259
Revision : 2
Created on : 9/19/2018
Published on : 9/19/2018
Exists online : False
Views : 195