概述不能得到BHO在64位工作
我正在处理IE11浏览器帮助对象。 当我在x86中构build它时,我得到了它的工作。 问题是,我想在x64上使用该项目,而在x64上构buildBHO扩展时无法正常工作。
扩展名显示在Internet Explorer加载项屏幕上,但是JavaScriptpopup窗口不显示。
通过Visual Studio命令提示符以pipe理员身份使用regasm的x64版本注册DLL,使用/不使用/codebase和/tlb但是没有结果。 registry项已成功添加到我的registry中,但BHO根本不在IE中工作。 我也尝试将文件放在Program files的子文件夹中,但它根本不起作用。
当我在增强保护模式下运行我的IE时,加载项pipe理器显示我的BHO incompatible ,但是没有EPM,IE显示即使不起作用。
在windows 8.1 + IE 11 +环回中不允许Web套接字客户端连接问题
Internet Explorer 11(IE 11)使用DOMParser中的parseFromString引发语法错误
windows 8.1 / IE11自定义URL协议打开 – > about:空白
如何在windows 10上强制安装IE 11?
在IE11(windows 7)中从Cloudfront下载的可执行文件无需文件扩展名即可下载
我想让BHO在x64上工作。
我也尝试过这个\’hello world\’BHO项目,但是当我改变它在x64上而不是x86上时会出现同样的问题。
在Win7上使用IE11的JavaScript运行时错误:无法设置未定义或空引用的属性“禁用”
IE不能访问本地主机,但铬和firefox工作
在Internet Explorer中强制打开用于XML文件下载的button
windows Media Player将不会从IE11中的链接播放.WMV
看起来它并不适用于所有人,所以,我将描述我所做的工作。
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:windowsMicrosoft.NETFrameworkv4.0.30319RegAsm.exe\” IEextension.dll /codebase \”c:windowsMicrosoft.NETFramework64v4.0.30319RegAsm.exe\” IEextension.dll /codebase
这将注册为x86和x64的DLL。 这是强制性的两个版本注册,否则IE不会喜欢它(它会抱怨扩展是\’不兼容\’),因为它将无法启动它取决于您的IE设置。 注意我想你可以为每个版本有两个不同的文件,但是.NET的Anycpu不需要这个文件。
5)运行该.bat作为管理员,这是当我这样做的输出:
\”c:windowsMicrosoft.NETFrameworkv4.0.30319RegAsm.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:windowsMicrosoft.NETFramework64v4.0.30319RegAsm.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 !!!”messageBox),但无论如何,去菜单工具/ Internet选项/程序/管理加载项,这是我看到:
如果扩展功能被禁用,您应该可以启用它(并重新启动)。
如果不起作用(默认情况下不应该),请确保您选中了“为增强保护模式启用64位进程*”(需要重新启动)。 对我来说信息是错误的,它应该只是说“启用64位进程”…
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
希望这会帮助你!
总结
以上是内存溢出为你收集整理的不能得到BHO在64位工作全部内容,希望文章能够帮你解决不能得到BHO在64位工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容