Firefox 和内嵌 Gecko 程序的 Plugins

昨日在 jumufeng 同学建立的 firefox 交流群 (81424441) 中,与群友们讨论了有关插件的一些事项。我在本地进行了测试,并总结了一些初步的见解,现分享如下:(欢迎对 mozilla 相关开发有兴趣或正在进行开发的朋友加入群组交流)

通常,对于 firefox 和其他嵌入 Gecko 内核的应用程序而言,其插件的注册和搜索机制在 Windows 下应与以下内容相关:

(1) 程序会首先检查可执行文件同级的 plugins 目录下的 DLL 等文件,判断文件名是否符合插件特征,并通过某种机制确认其是否为插件。命名规则:例如,flash 插件的 DLL 名为 NPSWF32.DLL,改为 asdfjljlk.dll 则无法识别,而 NPSWF311112.dll 或 NPSWFjkljdlfkj32.dll 可以被识别,N1PSWF32.dll 则无法识别。

(2) 注册表中的 HKEY_LOCAL_MACHINESOFTWAREMozillaPlugins 下注册了插件信息。

Firefox 和内嵌 Gecko 程序的 Plugins根据注册表项的 path 键值去搜索对应的 DLL,如果找不到,则在 firefox 的“附加组件”或 about:plugins 中不会显示,即使该 DLL 位于系统环境变量的 path 包含的路径下。((1) 中提到的 plugins 目录的情况除外)

立即进入“豆包AI人工智官网入口”;

立即学习“豆包AI人工智能在线问答入口”;

(3) 在 %appdata%MozillaFirefoxProfileswgnbwzjm.default 文件夹中的 pluginreg.dat 文件中包含具体配置项,插件是否启用和其他插件相关信息将从这里读取,并在“附加组件”和 about:plugins 中显示给用户。

Firefox 和内嵌 Gecko 程序的 Plugins光标处的 4 表示不启用,若为 1 或 5 则表示启用。若为 13,则表示找不到。删除此文件后再次运行 firefox 时会自动重新生成(根据 plugins 和注册表)。此设置对安装的 firefox 等在应用程序中启用 profile 的程序有效(我自己编写的嵌入 Gecko 的程序因为没有启用 profile,所以没有此文件,只能根据 plugins 和注册表来查找和显示插件)。剪切走此文件,则在 firefox 中已经禁用的插件也会被启用。

Plugins 文件夹的优先级更高。如果在 plugins 和注册表指示的路径下都能找到某插件 DLL,那么 pluginreg.dat 文件中的路径将被修改为 plugins 文件夹下的 DLL 路径。

其他相关小知识点:

(1) DLL 插件都实现了导出这三个函数。

Firefox 和内嵌 Gecko 程序的 Plugins(2) 如果删除插件注册表项和 pluginreg.dat 文件,但在 plugins 下有 DLL,仍可显示正确的 MIME 类型、描述等信息。推测 firefox 等程序在初始化时维护了一个数据库,根据 DLL 属性描述中的“原文件名”存储了这些信息的对应关系。

在 Windows XP 下查看这些 DLL 的属性,发现有 MIMEType、FileOpenName、FileExtents 与 about:plugins 中看到的 MIME 类型、描述、后缀三项一一对应,应该是从插件 DLL 的属性中直接读取的。

Firefox 和内嵌 Gecko 程序的 PluginsFirefox 和内嵌 Gecko 程序的 Plugins这些是我的初步认识,纯属个人测试后的推论,如有错误,欢迎指正。

以上就是Firefox 和内嵌 Gecko 程序的 Plugins的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/124970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Vscode如何配置Python环境?Vscode运行Python项目教程
上一篇 2025年11月27日 03:54:33
Linux命令行中find命令的使用技巧
下一篇 2025年11月27日 03:55:39

相关推荐

发表回复

登录后才能评论
关注微信