Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.
영어
죄송합니다. 이 문서는 귀하의 언어로 사용할 수 없습니다.

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

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

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

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.

이 정보가 유용한가요?

사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×