Sümptomid
Kujutage ette järgmist stsenaariumi.
-
Teil on installitud arvutisse, kus töötab Windows 7 või Windows Server 2008 R2 64-bitise versiooni Windows Internet Explorer 8.
-
Selles arvutis käivitada rakenduse 32-bitise versiooni.
-
Rakendus hosts avamiseks hüperlingid määratud bitistes versioonides Internet Explorer 8 abil CoCreateInstance funktsioon veebibrauseri juhtelementi. Internet Explorer 8, mis on käivitatud bitine sõltub kaitserežiim staatuse hüperlingi.
Selle stsenaariumi puhul rakendus ei tööta õigesti ja 32-bitine Internet Explorer 8 ei käivitu õigesti. Selle asemel käivitatakse sõltumata eelmääratletud konfigureerimine Internet Exploreri 64-bitist versiooni.
Näiteks arendada rakendus, mis töötab järgmiselt:
-
Kui avate Interneti turbetsooni sisalduvat hüperlinki, 32-bitine Internet Explorer 8 on käivitatud.
Märkus. Vaikimisi kaitstud režiim on lubatud Interneti turbetsooni.
-
Kui avate hüperlingi, mis on lisatud kohaliku sisevõrgu tsoonis või usaldusväärsete saitide turvatsooni, 64-bitine Internet Explorer 8 on käivitatud.
Märkus. Vaikimisi kaitstud režiim on keelatud turvalisuse kohaliku sisevõrgu tsooni ja usaldusväärsete saitide turvatsooni.
Selle näite puhul käivitatakse hüperlingi kaitserežiim olekust sõltumata Internet Exploreri 64-bitist versiooni.
Põhjus
See probleem ilmneb, sest InternetExplorerMedium klassiidentifikaator (CLSID) 32-bitine ohjurit pole registreeritud.
Rakendus kutsub CoCreateInstance funktsiooni Windows 7 või Windows Server 2008 R2 64-bitise versiooni Internet Explorer 8 32-bitine eksemplari loomiseks. See toiming nurjub, kui on pole 32-bitise käitleja jaoks InternetExplorerMedium CLSID töötava opsüsteemi. Selle stsenaariumi puhul CoCreateInstance funktsioon loob 64-bitine eksemplari asemel.
Lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:
975377 ei saa kasutada CoCreateInstance funktsioon arvutis, milles töötab Windows 7 64-bitise versiooni Internet Explorer 32-bitise versiooni eksemplari loomine
Lahendus
Turvavärskenduse teave
Selle probleemi lahendamiseks installige uusima Windows Internet Exploreri seniste koondturvavärskenduste. Selleks külastage järgmist Microsofti veebisaiti:
http://update.microsoft.comUusima Windows Internet Exploreri seniste koondturvavärskenduste kohta täpsema tehnilise teabe kohta külastage järgmist Microsofti veebisaiti:
http://www.microsoft.com/technet/security/current.aspxMärkus. See värskendus sisaldas esmalt turvavärskendus 2360131 (MS10-071). Kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2360131 MS10-071: Internet Exploreri seniste koondturvavärskenduste
Lahendus
Selle probleemi lahendamiseks kasutage ühte järgmistest meetoditest.
1. meetod
Käivitage Internet Explorer 8 32-bitine eksemplari enne, kui avate hüperlingi 32-bitise programmi. Selle stsenaariumi puhul esineb lingi aktiveerimine olemasoleva 32-bitine Internet Explorer 8 eksemplari.
2. meetod
Muutke HKEY_CLASSES_ROOT registritaru lisada puuduvad käitleja jaoks InternetExplorerMedium CLSID-d. Selleks tippige käsuviibale järgmine käsk ja vajutage sisestusklahvi 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"
3. meetod
Järgmine PowerShelli skripti abil lisada puudub ohjur:$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
Kuidas luua ja rakendada PowerShelli skriptide kohta lisateabe saamiseks külastage järgmist Microsofti veebisaiti: