我编写了一个 NPAPI 插件,如果我将它放在 %ProgramFiles\Mozilla FireFox\plugins 中,它会实例化并正确运行。但是,因为我希望它也可以与其他浏览器一起使用,所以我的偏好是在 HKLM\Software\MozillaPlugins\ 中注册它,如此处所述。所以在我的安装程序中,我创建了这些注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl]
"ProductName"="WinVnc NPAPI 控件"
"路径"="C:\Program Files\Alanta\WinVncCtl.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl\MimeTypes]
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl\MimeTypes\application/x-alanta-vnc]
"Description"="Alanta 的 VNC 服务器 NPAPI 插件"
当然,我的安装程序将 WinVncCtl.dll 文件放置在正确的位置。(我也尝试将它重命名为 npWinVnc.dll,理论上它可能需要以“np”开头,没有骰子。我还尝试了版本标签、MIME 类型等的各种组合。)
我像这样实例化它:
vncDiv.innerHTML = "<object id='vncServerControl' classid='@alanta.com/WinVncCtl' type='application/x-alanta-vnc' />";
但它似乎并没有以这种方式实例化。但是,如上所述,如果我在 object 标记中省略了 classid,而只是将文件 npWinVnc.dll 放在我的插件目录中,那么生活是美好的。
关于我的方法可能出了什么问题的任何想法?