Firebreath插件未在IE 10中加载 [英] Firebreath plugin not loading in IE 10

查看:229
本文介绍了Firebreath插件未在IE 10中加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

See end of post for more information.

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

I am trying to to get plugins created via the Firebreath framework (1.7.0) to load. I am on Windows 8 in Desktop Mode using Internet Explorer 10. I've reproduced this with the built-in test FBTtestPlugin that comes with Firebreath. The failure is silent in that the object element is created, but fails to have any properties specified by the plugin. How does one go about debugging this? The Microsoft Internet Explorer Compatibility Tool reports that the plugin is failing to load. (The FBTtestPlugin loads three plugins, hence the three errors.)

我还有其他(非FB)插件在相同的设置下工作(例如,此处的示例: http://ie.microsoft.com/testdrive/browser/activexfiltering/Default.html ).

I've got other (non-FB) plugins working on the same settings (e.g. the example here: http://msdn.microsoft.com/en-us/library/dd565667(v=vs.85).aspx works fine as do all the examples from this site http://ie.microsoft.com/testdrive/browser/activexfiltering/Default.html ).

我尝试了多种安全设置组合,但是这是我到目前为止所遵循的最宽松的设置:

I've tried a huge combination of security settings, but here's the most relaxed set I have so far follows:

  • 工具/安全性/ActiveX过滤:未选中
  • Internet选项/安全性/Internet:未选中启用保护模式"
  • Internet选项/安全性/Internet:处于自定义级别.在ActiveX下,除了诸如允许ActiveX过滤"之类的限制性属性外,所有内容均已启用"
  • 基于这些设置,各种安全警告均可见.
  • Tools / Safety / ActiveX Filtering: is unchecked
  • Internet Options / Security / Internet: "Enable Protected Mode" is unchecked
  • Internet Options / Security / Internet: is at Custom Level. Under ActiveX everything is "enabled" except restrictive properties such as "Allow ActiveX Filtering"
  • All sorts of security warnings are visible based on these settings.

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

Note: I don't intend to keep these settings. I just want to get the plugin working, then work backwards re-enabling security settings.

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

UPDATE I figured this out partly and can now run the FB test FBTestPlugin. To make debugging easier for IE, I defined the registry key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth as 0 to limit the browser to use one process. Unfortunately, with IE10 both iexplore.exe in Program Files and Program Files (x86) direct to the 64-bit version of IE. This prevents 32-bit plugins from running (see http://support.microsoft.com/kb/2716529 ), and the symptom is silent failure.

但是,我的插件仍然无法在IE中加载,否则上面提到的问题仍处于打开状态.问题仍然是静默加载失败.但是,我认为这可能与插件配置有关.兼容性测试工具中列出的CLSID(类似于上面的示例)被列为全0而不是有效的GUID.此外,注册表看起来很时髦:密钥HKCR \ Company.Name和HKCR \ Company.Name.1一样存在,但是两者都是空的(而不是像正常工作的插件中那样具有CLSID子代).预期的GUID确实存在,但名称为应用程序".我现在正在研究运行regsvr32时调用的代码.

However, my plugin still fails to load in IE and the retitled question above is otherwise still open. The problem is still silent load failure. However, I think it may have something to do with plugin configuration. The CLSID listed in the Compatibility Test Tool (like the example shown above) is listed as all 0's instead of a valid GUID. Moreover the registry looks funky: The key HKCR\Company.Name exists as does HKCR\Company.Name.1, but both are empty (instead of having a CLSID child as in normally working plugins). The expected GUID does exist, but under a bogus name "applications.'". I am now digging into the code that gets called when regsvr32 is run.

谢谢!

推荐答案

我正在提供此答案,希望有人可以使用该结果.

I am providing this answer in the hopes that someone can use the result.

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

IE was not loading the plugin for two reasons. 1) The TabProcGrowth registry key and the 32/64 bit issue with IE 10. ( http://support.microsoft.com/kb/2716529 ) Don't define this key.

2)我的插件说明使用撇号(例如"Gluttco的插件"),这使该组件的注册混乱了.

2) My plugin description used an apostrophe (e.g. "Gluttco's Plugin") and this messed up the registration of the component.

详细信息2): 我通过DllRegisterServer代码进行了跟踪,发现这些可移植的注册表项是由于我的插件描述包含撇号这一事实造成的.例如. 乔的插件".生成器(fbgen.py/cmake)生成了格式错误的FBControls.rgs文件(它没有转义引号,因此包含字符串文字,例如(s'Joe's cool plugin').DllRegisterServer代码(从中调用regsvr32)在(深入atlbase.h中)时使用了此文件的内容(嵌入吗?),奇怪的是,解析器未检测到错误(或以某种方式错误地恢复了它). ,然后再次开始添加良好的注册表项.

DETAILS ON 2): I traced through the DllRegisterServer code and found that the phoney registry entries are due to the fact that my plugin description contained an apostrophe. E.g. "Joe's plugin". The generator (fbgen.py/cmake), generated a malformed FBControls.rgs file (it't didn't escape the quotes and thus contained a string literal such as (s 'Joe's cool plugin'). The DllRegisterServer code (called from regsvr32) used the contents of this file (embedded?) when (deep in atlbase.h). Oddly, the parser did not detect the error (or somehow erroneously recovered). From Process Monitor I could see a bunch of bogus keys being added, before it started adding good registry keys again.

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

For now Firebreath plugin descriptions should not contain apostrophes (probably other characters are illegal too). It might be sensible to make fbgen.py check for these characters and possibly escape, reject, or replace them.

这篇关于Firebreath插件未在IE 10中加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆