gpt4 book ai didi

c# - 无法让 BHO 在 64 位中工作

转载 作者:IT王子 更新时间:2023-10-29 04:39:51 26 4
gpt4 key购买 nike

我正在处理 IE11 浏览器帮助程序对象。我在 x86 中构建它时让它工作。问题是,我想在 x64 上使用项目 BHO 扩展在 x64 上构建时不起作用。

扩展显示在 Internet Explorer 加载项屏幕中,但未显示 javascript 弹出窗口。

DLL 是通过 Visual Studio 命令提示符以管理员身份使用 x64 版本的 regasm 注册的,有/没有 /codebase/tlb 但没有结果。注册表项已成功添加到我的注册表中,但 BHO 根本无法在 IE 中运行。我也试过将文件放在 Program Files 的子文件夹中,但它根本不起作用。

当我在增强保护模式下运行我的 IE 时,加载项管理器显示我的 BHO 不兼容,但没有 EPM,IE 显示已启用,即使它不工作.

我想让 BHO 在 x64 上工作。

我也试过this 'hello world' BHO project但是当我将其更改为构建在 x64 而不是 x86 上时,会出现同样的问题。

最佳答案

它似乎并不适用于所有人,所以,我将描述我做了什么让它起作用。

1) 从这里下载示例项目:https://github.com/reinaldo13/ie-bho-extension

2) 修改BHO.cs中的RegisterBHO(...)方法

来自:

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

这将为 x86 和 x64 注册 dll。这是强制注册两个版本,否则 IE 不会喜欢它(它会提示扩展“不兼容”),因为它无法启动它,具体取决于您的 IE 设置。请注意,我想每个版本可以有两个不同的文件,但 .NET 的 AnyCPU 不需要。

5) 以管理员身份运行 .bat,这是我执行此操作时的输出:

"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!!!”消息框),但无论如何,转到菜单工具/Internet 选项/程序/管理加载项,这就是我所看到的:

enter image description here

如果扩展被禁用,您应该能够启用它(并重新启动)。

如果它不起作用(默认情况下它不应该),请确保您已选中“为增强型保护模式启用 64 位进程*”(需要重新启动)。对我来说,消息是错误的,它应该只是说“启用 64 位进程”...

enter image description here

关于c# - 无法让 BHO 在 64 位中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com