【问题标题】:Firebreath plugin not loading in IE 10Firebreath 插件未在 IE 10 中加载
【发布时间】:2013-06-22 16:39:54
【问题描述】:

编辑:更多信息见帖子末尾。

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

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

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

  • 工具/安全/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 时调用的代码。

谢谢大家!

【问题讨论】:

    标签: windows-8 internet-explorer-10 firebreath


    【解决方案1】:

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

    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 检查这些字符并可能转义、拒绝或替换它们可能是明智的。

    【讨论】:

    【解决方案2】:

    搜索发现: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-because-either,其中有一些你可以尝试的东西。

    【讨论】:

    • 感谢您在此处和之前在 IRC 上提供的帮助。 Firebreath 非常棒!
    • ...说谢谢而不是+1 提供帮助的答案有点空... =]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多