Il semble que cela ne fonctionne pas pour tout le monde, donc, je vais décrire ce que j'ai fait pour le faire fonctionner.
1) télécharger le projet exemple à partir d'ici: https://github.com/reinaldo13/ie-bho-extension
2) modifier la méthode RegisterBHO(...)
dans BHO.cs
de:
RegistryKey ourKey = registryKey.OpenSubKey(guid);
à:
RegistryKey ourKey = registryKey.OpenSubKey(guid, true); //we want to write the registry
3) compiler le projet pour AnyCPU: propriétés du projet, sélectionnez AnyCPU pour la cible de la plateforme.
4) créer un .bat comme celui-ci, d'adapter yo votre chemin, et copier ce côté vos sorties dll:
"c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
Ce enregistrera la dll pour x86 et x64. Ceci est obligatoire pour avoir les deux version enregistrée sinon IE ne l'aimera pas (il se plaindra l'extension est 'incompatible'), car il ne sera pas en mesure de le démarrer en fonction de vos paramètres IE. Note Je suppose que vous pouvez avoir deux fichiers différents pour chaque version, mais AnyCPU de .NET n'en a pas besoin.
5) que l'exécution .bat comme admin, voici la sortie quand je fais ceci:
"c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
Microsoft .NET Framework Assembly Registration Utility version 4.7.2046.0
for Microsoft .NET Framework version 4.7.2046.0
Copyright (C) Microsoft Corporation. All rights reserved.
RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully
"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
Microsoft .NET Framework Assembly Registration Utility version 4.7.2046.0
for Microsoft .NET Framework version 4.7.2046.0
Copyright (C) Microsoft Corporation. All rights reserved.
RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully
6) exécuter iexplore.exe
. Il peut fonctionner en fonction de vos paramètres (affiche un « hola !!! » messagebox), mais de toute façon, allez dans le menu Outils/Options Internet/Programmes/Gérer les modules complémentaires, ce que je vois:
Si l'extension est désactivée, vous devriez pouvoir l'activer (et redémarrer).
Si cela ne fonctionne pas (par défaut, cela ne devrait pas être le cas), assurez-vous que vous avez coché "Activer les processus 64 bits pour Enhanced Protected Mode *" (nécessite un redémarrage). Pour moi, le message est faux, il faut simplement dire « Activer les processus 64 bits » ...
L'échantillon fourni fonctionne en 64 bits pour moi. Vous devez 1) compiler x64 2) enregistrer en utilisant 'c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe ieextension.dll/codebase' (pas besoin de copier dans les fichiers de programme grâce à la base de code), 3) assurez-vous que le fichier iexplore.exe s'exécute en 64 bits, 4) assurez-vous que "Activer les processus 64 bits pour Enhanced Protected Mode" est coché dans IE/s Tools/Options/Advanced (FYI je n'ai pas "Enable Enhanced Protected Mode") "enable. –
La méthode [ComRegisterFunction] me semble assez cassée, elle n'écrit que la clé BHO mais ne parvient pas à écrire les clés CLSID @Simon, comment l'avez-vous fait? Avez-vous fait la même chose que l'auteur de CodeProject? avoir fait et avoir une version du code sans le [ComRegisterFunction] au début? –
@HansPassant - oui, j'ai oublié de dire que j'ai changé RegisterBHO en 'registryKey.OpenSubKey (guid, true);' pour pouvoir écrire la clé, mais c'est le seul changement que j'ai fait: Regasm 64 doit être lancé en tant qu'administrateur (comme d'habitude pour les changements dans HKLM) Plus configuration IE optio ns comme dans mes commentaires précédents. –