Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
45 lines (33 sloc) 1.65 KB

title: 在浏览器里启动本地应用 date: 2013-09-24 11:56 categories: web

考虑到安全问题,一般来说在浏览器里是不允许启动本地应用的。不过上网时候经常发现,在网页里点击一些图标,却能唤起本地的应用程序,比如QQ、迅雷、电驴等。本文介绍实现的原理

windows环境,修改注册表

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TEST]
@="TEST"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\TEST\DefaultIcon]
@="C:\\Windows\\Notepad.exe"
[HKEY_CLASSES_ROOT\TEST\shell]
[HKEY_CLASSES_ROOT\TEST\shell\open]
[HKEY_CLASSES_ROOT\TEST\shell\open\command]
@="C:\\Windows\\Notepad.exe \"%1\""

然后在网页里放一个链接

<a href="test:">test</a>

点击这个链接,就会启动Notepad应用

IE浏览器,通过ActiveXObject实现

在IE下用ActiveXObject,可以启动外部应用程序,甚至可以读取硬盘数据等

非IE浏览器,通过NPAPI实现

如FF和Chrome,不支持ActiveXObject,就需要使用NPAPI实现。比如支付宝的安全插件、安全证书,就是通过NPAPI实现,所以可以支持各种浏览器

NPAPI用C++开发,以下是2篇介绍的文章: http://stackoverflow.com/questions/9501482/java-to-npapi-for-chrome-extension http://blog.csdn.net/zhouyuqwert/article/details/7387516

You can’t perform that action at this time.