Firebreath插件未在IE 10中加载

Tim*_*Tim 2 firebreath windows-8 internet-explorer-10

编辑:有关更多信息,请参阅帖子的结尾.

我试图通过Firebreath框架(1.7.0)创建插件来加载.我使用Internet Explorer 10在桌面模式下使用Windows 8.我使用Firebreath附带的内置测试FBTtestPlugin重现了这一点.失败是沉默的,因为创建了object元素,但是没有插件指定的任何属性.怎么去调试这个?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选项/安全/互联网:处于自定义级别.在ActiveX下,所有内容都"启用",但限制性属性除外,例如"允许ActiveX过滤"
  • 根据这些设置可以看到各种安全警告. 安全设定

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

更新 我部分地想出了这一点,现在可以运行FB测试FBTestPlugin了.为了使IE更容易调试,我将注册表项HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth定义为0,以限制浏览器使用一个进程.不幸的是,使用IE10,程序文件和程序文件(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时调用的代码.

谢谢大家!

Tim*_*Tim 5

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

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

2)我的插件描述使用了撇号(例如"Gluttco的插件"),这搞砸了组件的注册.

详细信息2):我通过DllRegisterServer代码进行了跟踪,发现我们的插件描述中包含了一个撇号.例如"乔的插件".生成器(fbgen.py/cmake)生成了一个格式错误的FBControls.rgs文件(它没有转义引号,因此包含一个字符串文字,如(s'Joe's cool plugin').DllRegisterServer代码(来自regsvr32)在(深入atlbase.h)时使用了这个文件的内容(嵌入式?).奇怪的是,解析器没有检测到错误(或以某种方式错误地恢复).从Process Monitor我可以看到一堆虚假键被添加,在它再次开始添加好的注册表项之前.

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