收集的⼏种exe嵌⼊⽹页的⽅法(3)
基于浏览器的应⽤,表现⼒始终不够丰富,我们常常会想,在⼀个⽹页中,点⼀下某个链接,能够直接调⽤安装好的可执⾏程序有多好啊。按照微软的推荐,应该是通过ActiveX,把可执⾏程序嵌⼊到⽹页中,例如flash的ActiveX。这样,我们就要购买ActiveX的签名,不通过签名的东西,在IE6中是⽆法加载的,为⼀个⼩项⽬购买ActiveX的签名,代价太昂贵了。另外,很多时候还要考虑如果⽤户突然关闭了浏览器该怎么办。这对播放个flash、歌曲之类的没多⼤影响,但是很多时候,不能在关闭前清扫战场,带来的后果是灾难性的。通常,在企业应⽤中,我们总是通过IE直接调⽤exe。
最早的时候,从⽹页调⽤⼀个EXE是很简单的事情,⼀段javascript就可以了。但是,⾃从IE6开始,微软就不再允许这种“极不安全的⾏为”。这也是有道理的。没事就给你来个“format d:/q”,即使不这么恶劣,动不动就给你弹⼏百个notebook,也确实够恐怖的。浏览器不应该与操作系统有太多不必要的关联。
拿javascript在IE6测试之后,我⼏乎放弃了直接调⽤exe的想法,直到有⼀天,看到了腾讯的实现⽅法。
腾讯有⼀个在⽹页上⾯显⽰QQ状态的东西,点⼀下就能弹出⼀个对话框跟该QQ⽤户聊天(就是我blog左上⽅的那个Q我的⼩图标),⽽不会有任何警告。好神奇啊。注册表⾥⾯研究了⼀天,终于明⽩了怎么回事。
奈何boss要娶我的演员东北限电原因在windows中,注册表中包含各种协议(http,ftp,telnet等)的信息,包含了默认打开⽅式的参数。试⼀下,从IE的地址栏中输⼊,出现什么了?弹出了⼀个命令⾏窗⼝,开始进⾏telnet操作。IE居然能完成这个,那么为什么就不能完成“telnet1://参数” 呢?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SIMS]
大唐双龙传宋玉致@="SIMS"
"URL Protocol"="C:\\PROGRA~1\\SIMS\\ %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\\ %l"
把这个东西导⼊注册表,那么我们在浏览器中输⼊sims://1022,那么就会⾃动调⽤c:\program files\(当然了,你得确实有这个⽂件),并把1022这个参数传给该exe。这个操作被认为是安全的,不会有任何的限制。
狗狗名字到这⾥,思路就清晰了,我们的安装程序中,在注册表中建个协议,例如上⾯的SIMS,再把要执⾏的exe的路径信息写⼊,在⽹页直接⼀个超链接,协议://参数就可以了。exe⽂件接受这个参数,进⾏相应的处理。搞定。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论