Příznaky

Jde o takovouto situaci:

  • Máte Windows Internet Explorer 8 nainstalovány v počítači se systémem 64bitové verze systému Windows 7 nebo Windows Server 2008 R2.

  • Spuštění 32bitové verze aplikace v tomto počítači.

  • Aplikace je hostitelem ovládacího prvku webového prohlížeče otevřete hypertextové odkazy pomocí funkce CoCreateInstance v zadané verze aplikace Internet Explorer 8. Bit verzi aplikace Internet Explorer 8, který je spuštěn závisí na stavu chráněný režim hypertextový odkaz.

V tomto scénáři aplikace nefunguje správně a 32bitové verze aplikace Internet Explorer 8 není spuštěna očekávaným způsobem. Místo toho 64bitovou verzi aplikace Internet Explorer je spuštěna bez ohledu na předdefinované konfigurace.Například vyvinout aplikaci, která funguje takto:

  • Otevřete-li hypertextový odkaz, který je obsažen v zóně zabezpečení Internet , je spuštěna 32bitová verze aplikace Internet Explorer 8.

    Poznámka: Chráněný režim je ve výchozím nastavení povolen v zóně zabezpečení Internet .

  • Otevřete-li hypertextový odkaz, který je obsažen v zóně zabezpečení Místní intranet nebo v zóně zabezpečení Důvěryhodné servery , je spuštěna 64bitová verze aplikace Internet Explorer 8.

    Poznámka: Chráněný režim je ve výchozím nastavení zakázána v zóně zabezpečení Místní intranet a Důvěryhodné servery zóny zabezpečení.

V tomto příkladu je spuštěna 64bitová verze aplikace Internet Explorer bez ohledu na stav chráněný režim hypertextový odkaz.

Příčina

K tomuto problému dochází, protože je registrován žádný popisovač 32bitové InternetExplorerMedium identifikátoru třídy (CLSID).Aplikace volá funkci CoCreateInstance pro vytvoření instance 32bitové verze aplikace Internet Explorer 8 v 64bitové verzi systému Windows 7 nebo Windows Server 2008 R2. Tato operace se nezdaří, pokud není k dispozici žádný popisovač 32bitové pro InternetExplorerMedium CLSID v běžícím operačním systému. V tomto scénáři funkce CoCreateInstance místo toho vytvoří instance 64-bit.Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

975377 funkce CoCreateInstance nelze použít k vytvoření instance 32bitové verze aplikace Internet Explorer v počítači se systémem 64bitové verze systému Windows 7

Řešení

Informace o aktualizaci zabezpečení

Chcete-li vyřešit tento problém, nainstalujte nejnovější kumulativní aktualizaci zabezpečení pro aplikaci Internet Explorer. Chcete-li to provést, navštivte následující web společnosti Microsoft:

http://update.microsoft.comDalší technické informace o nejnovější kumulativní aktualizaci zabezpečení pro aplikaci Internet Explorer naleznete na následujícím webu společnosti Microsoft:

http://www.microsoft.com/technet/security/current.aspxPoznámka: Tato aktualizace byla poprvé zahrnuta v aktualizaci zabezpečení 2360131 (MS10-071). Další informace získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:

2360131 MS10-071: Kumulativní aktualizace zabezpečení pro aplikaci Internet Explorer

Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod.

Metoda 1

Spustíte 32bitové instance aplikace Internet Explorer 8 před otevřít hypertextový odkaz v 32bitové aplikace. V tomto případě odkaz aktivace dochází v existující instance 32bitové verze aplikace Internet Explorer 8.

Metoda 2

Úprava podregistru HKEY_CLASSES_ROOT registru Chcete-li přidat chybějící obslužné rutiny pro InternetExplorerMedium identifikátor CLSID. Chcete-li to provést, zadejte na příkazovém řádku následující příkaz a stiskněte klávesu ENTER:

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

Metoda 3

Chcete-li přidat chybějící obslužné rutiny použijte následující skript prostředí PowerShell:$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 Další informace o tom, jak vytvořit a implementovat skripty prostředí PowerShell naleznete na následujícím webu společnosti Microsoft:

Informace o příkazovém řádku prostředí PowerShell a skriptování prostředí

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.