2

编辑:有关更多信息,请参阅帖子末尾。

我正在尝试加载通过 Firebreath 框架(1.7.0)创建的插件。我在使用 Internet Explorer 10 的桌面模式下的 Windows 8 上。我已经使用 Firebreath 附带的内置测试 FBTtestPlugin 重现了这一点。失败是静默的,因为创建了对象元素,但没有插件指定的任何属性。如何进行调试?Microsoft Internet Explorer 兼容性工具报告插件无法加载。 MSIECTT (FBTtestPlugin 加载了三个插件,因此出现了三个错误。)

我有其他(非FB)插件在相同的设置下工作(例如这里的例子:http: //msdn.microsoft.com/en-us/library/dd565667 (v=vs.85).aspx工作正常与本网站http://ie.microsoft.com/testdrive/browser/activexfiltering/Default.html中的所有示例一样)。

我尝试了多种安全设置组合,但这是迄今为止我最轻松的设置:

  • 工具/安全/ActiveX 过滤:未选中 ActiveX 筛选已关闭
  • Internet选项/安全/Internet:未选中“启用保护模式”
  • Internet 选项/安全性/Internet:处于自定义级别。在 ActiveX 下,除了“允许 ActiveX 过滤”等限制性属性外,所有内容都是“启用”的
  • 根据这些设置,可以看到各种安全警告。 安全设定

注意:我不打算保留这些设置。我只想让插件正常工作,然后向后重新启用安全设置。

更新 我部分想通了,现在可以运行 FB 测试 FBTestPlugin。为了使 IE 的调试更容易,我将注册表项 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth 定义为 0,以限制浏览器使用一个进程。不幸的是,对于 IE10,Program Files 和 Program Files (x86) 中的 iexplore.exe 都直接指向 64 位版本的 IE。这会阻止 32 位插件运行(请参阅http://support.microsoft.com/kb/2716529),并且症状是静默失败。

但是,我的插件仍然无法在 IE 中加载,并且上面重新命名的问题仍然是开放的。问题仍然是静默加载失败。但是,我认为这可能与插件配置有关。兼容性测试工具中列出的 CLSID(如上面显示的示例)被列为全 0,而不是有效的 GUID。此外,注册表看起来很时髦:键 HKCR\Company.Name 与 HKCR\Company.Name.1 一样存在,但两者都是空的(而不是像正常工作的插件那样具有 CLSID 子项)。预期的 GUID 确实存在,但使用了一个假名“应用程序。”。我现在正在研究运行 regsvr32 时调用的代码。

谢谢大家!

4

2 回答 2

5

我提供这个答案是希望有人可以使用结果。

IE 没有加载插件有两个原因。1) TabProcGrowth 注册表项和 IE 10 的 32/64 位问题。 ( http://support.microsoft.com/kb/2716529 ) 不要定义此键。

2) 我的插件描述使用了撇号(例如“Gluttco's Plugin”),这弄乱了组件的注册。

详细信息 2):我跟踪 DllRegisterServer 代码,发现虚假注册表项是由于我的插件描述包含撇号这一事实。例如“乔的插件”。生成器 (fbgen.py/cmake) 生成了一个格式错误的 FBControls.rgs 文件(它没有转义引号,因此包含一个字符串文字,例如 (s 'Joe's cool plugin')。DllRegisterServer 代码(从regsvr32) 在 (atlbase.h 的深处) 使用了这个文件的内容(嵌入?)。奇怪的是,解析器没有检测到错误(或者以某种方式错误地恢复)。从进程监视器我可以看到添加了一堆伪造的密钥,在它再次开始添加好的注册表项之前。

目前 Firebreath 插件描述不应包含撇号(可能其他字符也是非法的)。让 fbgen.py 检查这些字符并可能转义、拒绝或替换它们可能是明智的。

于 2013-06-26T22:39:46.017 回答
4

搜索发现: http: //msdn.microsoft.com/en-us/library/dd565667 (v=vs.85).aspx

您是否有任何可能影响它的组策略?我认为这与 FireBreath 没有直接关系,而是与 activex 配置有关......

我还发现http://social.technet.microsoft.com/Forums/windows/en-US/90c3202c-448b-42b7-acf7-dab8dba7b000/one-or-more-activex-controls-could-not-be-displayed -因为-其中有一些你可以尝试的东西。

于 2013-06-26T02:15:33.453 回答