在网页如何调用客户端的可执行文件

简介: 原文:在网页如何调用客户端的可执行文件 在网页如何调用客户端的可执行文件 最近,群里在讨论如何从网页中打开一个exe文件。在群里面说了下思路,但总说不清楚,答应写一篇文章出来。这几天事情挺多,一直没时间写,让阿超同学久等了。
原文: 在网页如何调用客户端的可执行文件

在网页如何调用客户端的可执行文件

最近,群里在讨论如何从网页中打开一个exe文件。在群里面说了下思路,但总说不清楚,答应写一篇文章出来。这几天事情挺多,一直没时间写,让阿超同学久等了。

基于浏览器的应用,表现力始终不够丰富,我们常常会想,在一个网页中,点一下某个链接,能够直接调用安装好的可执行程序有多好啊。按照微软的推荐,应该是通过ActiveX,把可执行程序嵌入到网页中,例如flash的ActiveX。这样,我们就要购买ActiveX的签名,不通过签名的东西,在IE6中是无法加载的,为一个小项目购买ActiveX的签名,代价太昂贵了。另外,很多时候还要考虑如果用户突然关闭了浏览器该怎么办。这对播放个flash、歌曲之类的没多大影响,但是很多时候,不能在关闭前清扫战场,带来的后果是灾难性的。通常,在企业应用中,我们总是通过IE直接调用exe。
最早的时候,从网页调用一个EXE是很简单的事情,一段javascript就可以了。但是,自从IE6开始,微软就不再允许这种“极不安全的行为”。这也是有道理的。没事就给你来个“format d:/q”,即使不这么恶劣,动不动就给你弹几百个notebook,也确实够恐怖的。浏览器不应该与操作系统有太多不必要的关联。
拿javascript在IE6测试之后,我几乎放弃了直接调用exe的想法,直到有一天,看到了腾讯的实现方法。
腾讯有一个在网页上面显示QQ状态的东西,点一下就能弹出一个对话框跟该QQ用户聊天,而不会有任何警告。好神奇啊。注册表里面研究了一天,终于明白了怎么回事。

在windows中,注册表中包含各种协议(http,ftp,telnet等)的信息,包含了默认打开方式的参数。试一下,从IE的地址栏中输入telnet://www.163.com,出现什么了?弹出了一个命令行窗口,开始进行telnet操作。IE居然能完成这个,那么为什么就不能完成“telnet1://参数” 呢?

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS]
@="SIMS"
"URL Protocol"="C://PROGRA~1//SIMS//trans.exe %l"

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/DefaultIcon]
@="%SystemRoot%//system32//url.dll,0"

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell]

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell/open]

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell/open/command]
@="C://PROGRA~1//SIMS//trans.exe %l"


把这个东西导入注册表,那么我们在浏览器中输入sims://1022,那么就会自动调用c:/program files/sims/trans.exe(当然了,你得确实有这个文件),并把1022这个参数传给该exe。这个操作被认为是安全的,不会有任何的限制。
到这里,思路就清晰了,我们的安装程序中,在注册表中建个协议,例如上面的SIMS,再把要执行的exe的路径信息写入,在网页直接一个超链接,协议://参数就可以了。exe文件接受这个参数,进行相应的处理。搞定。

记住,协议://后面的所有字符串被看做是一个参数。那么,exe文件永远只有两个参数,参数0是它的完整执行路径,参数1就是网页传过来的字符串

目录
相关文章
|
7月前
|
前端开发
调试前端时,在浏览器上修改参数并重新调用接口
有时候我们的页面点击过了,但是接口出问题,想修改参数再调用一次,一般是用apiPost工具把接口复制,再加上token和参数,但是这样非常的效率比较低。
726 0
Request请求转发和重定向的资源路径问题,目录到底加不加,取决于浏览器用,还是服务器用,规避项目目录发生修改,导致重定向失败
Request请求转发和重定向的资源路径问题,目录到底加不加,取决于浏览器用,还是服务器用,规避项目目录发生修改,导致重定向失败
|
7月前
|
Web App开发 测试技术 API
Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求
Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求
171 1
|
7月前
|
Ubuntu
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
214 1
|
7月前
|
Ubuntu
因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
159 1
IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
|
前端开发 Go API
go 数据导出Excel&前台接收后端返回文件流并在浏览器提供下载
go 数据导出Excel&前台接收后端返回文件流并在浏览器提供下载
916 0
go 数据导出Excel&前台接收后端返回文件流并在浏览器提供下载