windows-8 - Firebreath 插件未在 IE 10 中加载

标签 windows-8 internet-explorer-10 firebreath

编辑:请参阅帖子末尾以获取更多信息。

我正在尝试加载通过 Firebreath 框架 (1.7.0) 创建的插件。我在 Windows 8 桌面模式下使用 Internet Explorer 10。我使用 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 Filtering is Off
  • Internet 选项/安全/Internet:未选中“启用保护模式”
  • Internet 选项/安全/Internet:处于自定义级别。在 ActiveX 下,除了“允许 ActiveX 过滤”等限制性属性外,所有内容均“已启用”
  • 根据这些设置,可以看到各种安全警告。 Security Settings

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

更新 我部分地解决了这个问题,现在可以运行 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 确实存在,但使用虚假名称“applications.”。我现在正在深入研究运行 regsvr32 时调用的代码。

谢谢大家!

最佳答案

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

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 Plug')。DllRegisterServer 代码(从regsvr32)在(atlbase.h深处)使用了该文件的内容(嵌入的?)。奇怪的是,解析器没有检测到错误(或以某种方式错误地恢复)。从进程监视器我可以看到添加了一堆伪造的 key ,然后再次开始添加良好的注册表项。

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

关于windows-8 - Firebreath 插件未在 IE 10 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304860/

相关文章:

extjs - 在 Windows 8 Metro 应用程序中使用 Sencha Touch

c# - 在 WinRT Metro 中将控件渲染到图像中

data-binding - INotifyCollectionChanged 不足以更新数据绑定(bind)控件?

html - Windows 8 Flexboxes - 启用溢出的嵌套 Flexboxes

html - 打印时 IE10 边框问题 w/Rowspan

javascript - JavaScript 中的 ValidatorValidate 方法不适用于 ie10

css - 为什么 IE10 要求存在 p :hover {} rule for transitions to work on a pseudo element?

c++ - 如何从 JSAPI 端设置插件对象的边框和其他样式?

c++ - FireBreath 和 ICE38

javascript - firebreath 插件的 ActiveX 名称和类型是什么?