Подтвердить что ты не робот

Не удается заставить BHO работать в 64-битном режиме

Я работаю над IE11 Browser Helper Object. Я начал работать, когда создаю его на x86. Проблема в том, что я хочу использовать проект на x64, расширение BHO не работает, когда оно построено на x64.

Расширение отображается на экране надстроек Internet Explorer, но всплывающее окно javascript не отображается.

DLL регистрируется с использованием версии rega x64 через командную строку Visual Studio в качестве администратора, с/без /codebase и /tlb, но без результата. Ключ реестра успешно добавлен в мой реестр, но BHO просто не работает в IE. Я также попытался разместить файлы в подпапке Program Files, но он просто не работает.

Когда я запускаю свой IE в расширенном защищенном режиме, диспетчер надстроек показывает, что мой BHO incompatible, но без EPM IE показывает enabled, хотя он не работает.

Я хочу, чтобы BHO работал на x64.

Я также попробовал этот проект "привет мир" BHO, но когда я его сменил на x64 вместо x86, возникает такая же проблема.

4b9b3361

Ответ 1

Кажется, что это не работает для всех, поэтому я опишу, что я сделал, чтобы заставить его работать.

1) загрузите образец проекта отсюда: https://github.com/reinaldo13/ie-bho-extension

2) изменить RegisterBHO(...) метод в BHO.cs

от

RegistryKey ourKey = registryKey.OpenSubKey(guid);

в

  RegistryKey ourKey = registryKey.OpenSubKey(guid, true); //we want to write the registry

3) скомпилируйте проект для AnyCPU: свойства проекта, выберите AnyCPU для целевой платформы.

4) создайте .bat, как это, адаптируйте свой путь и скопируйте его в сторону выходов 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   

Это будет зарегистрировать dll для x86 и x64. Это обязательный, чтобы обе версии были зарегистрированы, иначе IE не понравится (он будет жаловаться, что расширение "несовместимо" ), потому что оно не сможет запустить его в зависимости от ваших настроек IE. Примечание. Предположим, у вас может быть два разных файла для каждой версии, но .NET AnyCPU не нуждается в этом.

5) запустите этот .bat как admin, вот вывод, когда я это делаю:

"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) запустите iexplore.exe. Он может работать в зависимости от ваших настроек (отображает сообщение "HOLA!!!" ), но в любом случае перейдите в меню "Инструменты" / "Свойства обозревателя" / "Программы" / "Управление надстройками", вот что я вижу:

введите описание изображения здесь

Если расширение отключено, вы должны иметь возможность включить его (и перезапустить).

Если он не работает (по умолчанию он не должен), убедитесь, что вы отметили "Включить 64-разрядные процессы для Enhanced Protected Mode *" (требуется перезагрузка). Для меня сообщение неверно, оно должно просто сказать "Включить 64-битные процессы"...

введите описание изображения здесь

Ответ 2

Regasm.exe(инструмент регистрации сборки) ЗДЕСЬ

Проверьте настройки проекта, чтобы скомпилировать их как 64-битные и проверить версию IE. и запустить его в режиме администратора.

Ваш код совершенен. только системные настройки и конфигурации компиляции перепутаны,

также посмотрите этот параметр https://answers.microsoft.com/en-us/ie/forum/ie11-windows_7/enable-64-bit-processes-in-ie-11/212270df-cc35-4e09-89e4-13b9da1bb6a7?auth=1

Надеюсь, это поможет вам!