【问题标题】:64bit BHO not loading inside IE 9 6464 位 BHO 未在 IE 9 64 中加载
【发布时间】:2013-01-03 04:39:23
【问题描述】:

我创建了一个 32 位和 64 位版本的 BHO(C++ 代码)。 32 位版本在 IE 9 32 位中可以正常加载,但 64 位版本在 IE 9 64 中的 WIndows 7 中加载不正常。

我已经仔细检查过:

  • 64 位 DLL 确实是 64 位代码(DLL 上的dumpbin /headers
  • 注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper ObjectsHKEY_CLASSES_ROOT\Wow6432Node\CLSID 正确
  • 我的 64 位 IE 可以加载第 3 方扩展(实际加载了 2 个 BHO)

我现在不知道如何调试问题。

注意:我知道Browser Helper Object doesnot get loaded in IE8 和其他有关 64 位 BHO 的相关问题,但他们的问题和解决方案不同

【问题讨论】:

  • 就调试而言,我会启动进程监视器并捕获 IE 进程的所有注册表和文件系统访问。特别是,查找 NOT FOUND 结果,希望您能发现进程试图在注册表或 fs 中查找的位置。
  • 你的 DLL 是否被加载了?即,如果您在 windbg 或 ntsd 下运行,并发出 sxe ld yourdll.dll 然后继续运行,该断点会被命中吗?如果确实如此,然后您会立即卸载,则存在 dll 依赖问题。如果你从来没有打过这个,那么你的注册是错误的。如果是前者,你喜欢静态crt还是动态crt?

标签: internet-explorer 64-bit bho add-on


【解决方案1】:

问题是我误解了如何为 64 位注册 BHO。通过调用 regsvr32 的 32 位或 64 位版本,DLL 将被注册为 32 位 (Wow6432Node) 或 64 位。我不必担心在我的 DLL 中使用哪个注册表,只需调用正确的 regsvr32。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2012-02-14
    • 2013-01-28
    • 2019-10-09
    • 2014-05-27
    相关资源
    最近更新 更多