Un lien hypertexte spécifié pour s’ouvrir dans une instance 32 bits d’Internet Explorer 8 s’ouvre dans une instance 64 bits d’Internet Explorer 8

Symptômes

Considérez le scénario suivant :

  • Vous disposez de Windows Internet Explorer 8 est installé sur un ordinateur qui exécute une version 64 bits de Windows 7 ou de Windows Server 2008 R2.

  • Vous exécutez une version 32 bits d’une application sur cet ordinateur.

  • L’application héberge le contrôle de navigateur web pour ouvrir les liens hypertexte dans les versions d’Internet Explorer 8 bits spécifié en utilisant la fonction CoCreateInstance . La version d’Internet Explorer 8 est démarré dépend de l’état du mode protégé du lien hypertexte.

Dans ce scénario, l’application ne fonctionne pas correctement et la version 32 bits d’Internet Explorer 8 n’est pas démarrée comme prévu. Au lieu de cela, la version 64 bits d’Internet Explorer est démarrée quelle que soit la configuration prédéfinie.

Par exemple, vous développez une application qui fonctionne comme suit :

  • Si vous ouvrez un lien hypertexte qui est inclus dans la zone de sécurité Internet , la version 32 bits d’Internet Explorer 8 est démarrée.

    Remarque Par défaut, le mode protégé est activé dans la zone de sécurité Internet .

  • Si vous ouvrez un lien hypertexte qui est inclus dans la zone de sécurité intranet Local , ou dans la zone de sécurité sites de confiance , la version 64 bits d’Internet Explorer 8 est démarrée.

    Remarque Par défaut, le mode protégé est désactivé dans la zone de sécurité intranet Local et dans la zone de sécurité sites de confiance .

Dans cet exemple, la version 64 bits d’Internet Explorer est démarrée, quel que soit l’état du mode protégé du lien hypertexte.

Cause

Ce problème se produit car aucun gestionnaire de 32 bits pour l’identificateur de classe (CLSID) de InternetExplorerMedium n’est enregistré.

Une application appelle la fonction CoCreateInstance pour créer une instance 32 bits d’Internet Explorer 8 dans une version 64 bits de Windows 7 ou de Windows Server 2008 R2. Cette opération échoue lorsqu’il n’y a aucun gestionnaire de 32 bits pour InternetExplorerMedium CLSID dans le système d’exploitation en cours d’exécution. Dans ce scénario, la fonction CoCreateInstance crée une instance de 64 bits à la place.

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

975377 vous ne pouvez pas utiliser la fonction CoCreateInstance pour créer une instance de la version 32 bits d’Internet Explorer sur un ordinateur qui exécute la version 64 bits de Windows 7

Résolution

Informations sur la mise à jour de sécurité

Pour résoudre ce problème, installez la mise à jour de sécurité cumulative la plus récente pour Windows Internet Explorer. Pour ce faire, visitez le site Web Microsoft suivant :

http://update.microsoft.comPour obtenir des informations techniques supplémentaires sur la mise à jour de sécurité cumulative la plus récente pour Windows Internet Explorer, visitez le site Web Microsoft suivant :

http://www.microsoft.com/technet/security/current.aspxRemarque Cette mise à jour a été pour la première fois dans la mise à jour de sécurité 2360131 (MS10-071). Pour plus d’informations, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

2360131 MS10-071 : mise à jour de sécurité Cumulative pour Internet Explorer

Solution de contournement

Pour contourner ce problème, appliquez l’une des méthodes suivantes.

Méthode 1

Démarrage d’une instance 32 bits d’Internet Explorer 8 avant d’ouvrir un lien hypertexte dans l’application 32 bits. Dans ce scénario, l’activation du lien se produit dans l’instance 32 bits existante d’Internet Explorer 8.

Méthode 2

Modifier la ruche de Registre HKEY_CLASSES_ROOT pour ajouter le gestionnaire manquant pour le CLSID InternetExplorerMedium . Pour ce faire, tapez la commande suivante à une invite de commande et appuyez sur ENTRÉE :

Reg ajouter « HKCR\Wow6432Node\CLSID\ {D5E8041D-920F-45E9-B8FB-B1DEB82C6E5E} \LocalServer32 » /ve /t REG_EXPAND_SZ /d « % ProgramFiles% (x86) %\Internet Explorer\iexplore.exe - startmediumtab »

Méthode 3

Utilisez le script PowerShell suivant pour ajouter le gestionnaire manquant :$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
Pour plus d’informations sur la façon de créer et d’implémenter des scripts PowerShell, visitez le site Web Microsoft suivant :

Informations sur la ligne de commande PowerShell et de l’environnement de script

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×