Problembeschreibung

Betrachten Sie das folgende Szenario:

  • Sie haben Windows Internet Explorer 8 auf einem Computer mit einer 64-Bit-Version von Windows 7 oder Windows Server 2008 R2 installiert.

  • Eine 32-Bit-Version einer Anwendung auf diesem Computer ausgeführt.

  • Die Anwendung hostet das Webbrowser-Steuerelement öffnen Hyperlinks im angegebenen Bit-Versionen von Internet Explorer 8 mithilfe der CoCreateInstance -Funktion. Die Bit-Version von Internet Explorer 8, die gestartet wird hängt von der geschützten Status des Hyperlinks.

In diesem Szenario die Anwendung nicht ordnungsgemäß funktioniert, und 32-Bit-Version von Internet Explorer 8 nicht wie erwartet gestartet. Stattdessen wird die 64-Bit-Version von Internet Explorer unabhängig von der vorgegebenen Konfiguration gestartet.

Sie entwickeln beispielsweise eine Anwendung, wie folgt:

  • Wenn Sie einen Hyperlink, der in der Sicherheitszone Internet enthalten ist öffnen, wird die 32-Bit-Version von Internet Explorer 8 gestartet.

    Hinweis Der geschützte Modus ist standardmäßig in der Sicherheitszone Internet aktiviert.

  • Wenn Sie einen Hyperlink, der in der lokalen Intranetzone oder in der vertrauenswürdigen Sites enthalten ist öffnen, wird die 64-Bit-Version von Internet Explorer 8 gestartet.

    Hinweis Standardmäßig ist der geschützte Modus Sicherheitszone Lokales Intranet und Vertrauenswürdige Sites Sicherheitszone deaktiviert.

In diesem Beispiel wird die 64-Bit-Version von Internet Explorer unabhängig vom Status der geschützte Modus des Hyperlinks gestartet.

Ursache

Dieses Problem tritt auf, weil keine 32-Bit-Handler für InternetExplorerMedium -Klassenbezeichner (CLSID) registriert ist.

Eine Anwendung ruft die CoCreateInstance -Funktion um eine 32-Bit-Instanz von Internet Explorer 8 in einer 64-Bit-Version von Windows 7 oder Windows Server 2008 R2 erstellen. Dieser Vorgang schlägt fehl, wenn keine 32-Bit-für InternetExplorerMedium CLSID im laufenden Betriebssystem Handler. In diesem Szenario erstellt die CoCreateInstance -Funktion stattdessen eine 64-Bit-Instanz.

Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

975377 die CoCreateInstance-Funktion können Sie erstellen eine Instanz der 32-Bit-Version von Internet Explorer auf einem Computer mit der 64-Bit-Version von Windows 7

Problemlösung

Informationen zum Sicherheitsupdate

Um dieses Problem zu beheben, installieren Sie das neueste kumulative Sicherheitsupdate für Windows Internet Explorer. Besuchen Sie hierzu folgende Microsoft-Website:

http://update.microsoft.comWeitere technische Informationen zum aktuellen kumulativen Sicherheitsupdate für Windows Internet Explorer finden Sie auf folgender Microsoft-Website:

http://www.microsoft.com/technet/security/current.aspxHinweis Dieses Update war erstmals in Sicherheitsupdate 2360131 (MS10-071) enthalten. Für Weitere Informationen klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

2360131 MS10-071: Kumulatives Sicherheitsupdate für Internet Explorer

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden:

Methode 1

Starten Sie eine 32-Bit-Instanz von Internet Explorer 8, bevor Sie einen Hyperlink in der 32-Bit-Anwendung öffnen. In diesem Szenario tritt Link Aktivierung in vorhandenen 32-Bit-Instanz von Internet Explorer 8.

Methode 2

Ändern Sie die Registrierungsstruktur HKEY_CLASSES_ROOT , um fehlende Handler für InternetExplorerMedium CLSID hinzuzufügen. Hierzu geben Sie folgenden Befehl ein und drücken SIE:

REG hinzufügen "HKCR\Wow6432Node\CLSID\ {D5E8041D-920F-45E9-B8FB-B1DEB82C6E5E} \LocalServer32" / VE t REG_EXPAND_SZ/d "% ProgramFiles% (x86) %\Internet Explorer\iexplore.exe - Startmediumtab"

Methode 3

Verwenden Sie das folgende PowerShell-Skript fehlen Handler hinzugefügt:$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
Weitere Informationen zum Erstellen und Implementieren von PowerShell-Skripts finden Sie auf folgender Microsoft-Website:

Informationen zu PowerShell-Befehlszeile und scripting-Umgebung

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Übersetzungsqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×