对firefox和内嵌Gecko程序的插件(plugins)的注册搜索方式的一点认识
2012-03-15 00:06
337 查看
昨日在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_MACHINE\SOFTWARE\MozillaPlugins下注册着插件信息
根据注册表项的path项的键值去搜索对应DLL,如果找不到,则在firefox的”附加组件”或者about:plugins里不会显示,即使该DLL放在系统环境变量的path包含的路径下.((1)里面的plugins目录的情况除外)
(3)%appdata%\Mozilla\Firefox\Profiles\wgnbwzjm.default文件夹里头的pluginreg.dat文件里有具体配置项,插件是否启用和其它插件相关信息将从这里读取并在”附加组件”和about:plugins里显示给用户.
光标处的4表示不启用,若为1或者5则为启用.若为13,则为找不到.此文件删除后再运行firefox时会自动再生成(根据plugins和注册表里).此设置对安装的firefox等这种在应用程序里启用profile的程序有效(我自己写的内嵌Gecko的程序因为没有启用profile,所以并无此文件,只能根据plugins和注册表来查找和显示插件).剪切走此文件,则在firefox中已经禁用过的插件也被启用.
Plugins文件夹的优先级更高.如果在plugins与注册表指示的路径下都能找到某插件DLL,那么pluginreg.dat文件里的路径被修改为plugins文件夹下DLL路径.
其它相关小知识点:
(1) DLL插件都实现了导出这3个函数.
(2)若插件注册表项删除, pluginreg.dat文件删除,plugins下有DLL,则仍可显示正确MIME类型,描述等信息.推测是firefox等程序在初始化时维护的有一个数据库,里头根据DLL属性描述里的”原文件名”存储有一一对应的有这些信息.
在windows xp下查看这些DLL的属性,发现有MIMEType,FileOpenName,FileExtents与下面在about:plugins里看到的MIME类型,描述,后缀三项一一对应,应该就是直接从插件DLL的属性里读取的。
一点粗浅认识,纯属自行测试后的一些推论,如有谬误尽请指正.
Blog: http://blog.csdn.net/mzlogin
Email: mzlogin (at) qq.com
一般来讲,对于firefox和其它内嵌Gecko内核的应用程序来讲,其插件的注册和搜索的机制应该与如下内容有关(windows下):
(1)程序会优先考虑可执行文件同级的plugins目录下的DLL等类型文件,判断文件的命名是否符合插件特征且通过某种机制确定其是否为插件.命名规范:如flash插件的dll名为NPSWF32.DLL,改成asdfjljlk.dll则无法识别,NPSWF311112.dll这种则可以识别,NPSWFjkljdlfkj32.dll这种可以识别,N1PSWF32.dll无法识别.
(2)注册表里HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins下注册着插件信息
根据注册表项的path项的键值去搜索对应DLL,如果找不到,则在firefox的”附加组件”或者about:plugins里不会显示,即使该DLL放在系统环境变量的path包含的路径下.((1)里面的plugins目录的情况除外)
(3)%appdata%\Mozilla\Firefox\Profiles\wgnbwzjm.default文件夹里头的pluginreg.dat文件里有具体配置项,插件是否启用和其它插件相关信息将从这里读取并在”附加组件”和about:plugins里显示给用户.
光标处的4表示不启用,若为1或者5则为启用.若为13,则为找不到.此文件删除后再运行firefox时会自动再生成(根据plugins和注册表里).此设置对安装的firefox等这种在应用程序里启用profile的程序有效(我自己写的内嵌Gecko的程序因为没有启用profile,所以并无此文件,只能根据plugins和注册表来查找和显示插件).剪切走此文件,则在firefox中已经禁用过的插件也被启用.
Plugins文件夹的优先级更高.如果在plugins与注册表指示的路径下都能找到某插件DLL,那么pluginreg.dat文件里的路径被修改为plugins文件夹下DLL路径.
其它相关小知识点:
(1) DLL插件都实现了导出这3个函数.
(2)若插件注册表项删除, pluginreg.dat文件删除,plugins下有DLL,则仍可显示正确MIME类型,描述等信息.推测是firefox等程序在初始化时维护的有一个数据库,里头根据DLL属性描述里的”原文件名”存储有一一对应的有这些信息.
在windows xp下查看这些DLL的属性,发现有MIMEType,FileOpenName,FileExtents与下面在about:plugins里看到的MIME类型,描述,后缀三项一一对应,应该就是直接从插件DLL的属性里读取的。
一点粗浅认识,纯属自行测试后的一些推论,如有谬误尽请指正.
Blog: http://blog.csdn.net/mzlogin
Email: mzlogin (at) qq.com
相关文章推荐
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序的处理方式
- IE8.1将支持Firefox插件,Gecko和Webkit引擎
- asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序"
- 另类的旁注方式 seesion欺骗+dns欺骗 登陆 -> 注册 -> 搜索 分享
- Firefox 版本 52(计划于 2017 年 3 月发布)开始,Firefox 将停止支持浏览器支持插件的标准方式
- 定制自己的火狐搜索插件 searchplugins
- Firefox 使用右键菜单进行搜索的插件
- 关于.net编译过后的程序增加功能的一种实现方式_也可以说是.net exe注入,插件机制_开发记录
- 关于Unity程序在IOS和Android上显示内嵌网页的方式
- 如何显示Firefox插件(Plugins)的完整路径并删除
- Android插件开发 —— 通过预注册方式打开activity(记录我踩过的坑)
- Postman chrome浏览器插件下载地址和安装方式,解决“只能通过Chrome网上应用商店安装该程序”的方法
- MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式
- [Firefox插件]Google搜索提速插件推荐
- 快速切换google搜索语言的firefox插件
- 关于广播注册方式的一点补充
- Smarty----注册一个函数以plugins方式
- Firefox插件(plugins)开发实用指南
- 对程序调用API变形的一点认识
- asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序"