如何在网页上开启Windows OS的应用程序
需求
最近有项目需要用到在网页的管理系统点击设备标识,开启远程桌面的需求,其要求就是能点击之后启动开启远程桌面应用程序,想想其实不难,原本准备使用java Applet来实现,但是绕了 一圈发现applet现在狠多浏览器不再兼容,使用起来确实麻烦。后来决定用如下方式实现。
注册表自定义浏览器协议
基本思路参见博客:https://blog.csdn.net/zhuolei123/article/details/50470982
编写注册表编辑文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\rdp]
"URL Protocol"="D:\\app\\rdp.exe"
@="RdpProtocol"
[HKEY_CLASSES_ROOT\rdp\DefaultIcon]
@="D:\\app\\rdp.exe,1"
[HKEY_CLASSES_ROOT\rdp\shell\open\command]
@="\"D:\\app\\rdp.exe\" \"%1\""
注意其中的空行不能少,其中@
打头表示注册表项的默认值,路径一定要使用双斜杆\\
否则不能插入项成功,脚本运行时也不能正确报错。
编写RDP.exe
其实为什么需要用到自己写一个exe程序啦,问题在于,注册表方式传参的时候他会把整个浏览器地址的内容全部传入例如
rdp://127.0.0.1
在调用应用程序时,应用程序收到的参数是整个字符串rdp://127.0.0.1
。如果我们直接用mstsc.exe
那他获取到的参数就会错误,无法识别
为了简化安装,所以考虑比较简单的语言,且与windows兼容较好的语言来实现。且我们本身要在exe上做的功夫比较少,所以我们想到了用winc的Win32库来实现一个exe或则用vbs。exe只需要丢过去就好了。后来想来最简单应该是vbs好些,最后选择采用VBS来实现
Dim ip
set args=Wscript.Arguments
ip = right(args(0) , len(args(0))-6)
set objWsh = CreateObject("WScript.Shell")
ip = replace(ip,"/","")
objWsh.Exec "mstsc -v "& ip
最后很遗憾,如果直接使用vbs浏览器还调用不上来。最后只能将vbs to exe了。
VBS TO EXE
下载一个应用程序教 vbs to exe来操作就好了。下载地址:https://download.csdn.net/download/maoye/10681056