jumpserver的解决方案以及解决过程见链接
jumpserver解决方案
使用注册表的方式:
1、首先编辑注册表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\YourApplication]
"URL Protocol"="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
@="YourApplication"
[HKEY_CLASSES_ROOT\YourApplication\DefaultIcon]
@="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe,1"
[HKEY_CLASSES_ROOT\YourApplication\shell]
[HKEY_CLASSES_ROOT\YourApplication\shell\open]
[HKEY_CLASSES_ROOT\YourApplication\shell\open\command]
@="\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" \"%1\""
其中,URL Protocol是待调用的应用程序本地的所在位置(注意单斜杠需要改为双斜杠),YourApplication这里是你想取得应用的名字(一会儿在web端会用到,名称要对应)。然后将上述文件保存为.reg文件,并添加到注册表中。
2、添加到注册表后,编辑网页端文件,这里以index.html为例。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<a href="YourApplication:hello/">autologintest</a>
</div>
</body>
</html>
其中
<a href="YourApplication:hello/">autologintest</a>
这里的YourApplication就是前面对应的应用的名称,冒号后面是要传递给该应用得参数,这里是hello。打开上述的.html文件,如下图所示。
点击上述链接,即可调用本地应用程序。
自动读取本地安装路径并自动加入到注册表中的python代码
#!/usr/bin/python
#encoding:utf-8
import sys
import os
import win32api
import win32con
def find_path(name='MobaXterm.exe'): # 查找的软件名称
path = None
key = rf'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store'
#通过获取Windows注册表查找软件
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, key, 0, win32con.KEY_READ)
#| win32con.KEY_WOW64_64KEY)
info2 = win32api.RegQueryInfoKey(key)
for j in range(0, info2[1]):
key_value = win32api.RegEnumValue(key, j)[0]
if key_value.endswith('MobaXterm.exe'):
path = key_value
break
win32api.RegCloseKey(key)
return path #返回查找到的安装路径
# 下面可忽略
sys.path.append(find_path())#将获取的安装路径添加到环境变量
paths = find_path()
print(paths)
intab = '\\'
outtab = '\\\\'
trantab = paths.replace(intab, outtab)
paths = trantab
file = open('D://tests.reg','w')
file.write("Windows Registry Editor Version 5.00\n")
file.write("[HKEY_CLASSES_ROOT\YourApplication]\n")
file.write("\"URL Protocol\"=" "\""+ paths +"\"""\n")
file.write("@=\"YourApplication\"\n")
file.write("[HKEY_CLASSES_ROOT\YourApplication\DefaultIcon]\n")
file.write("@=\""+ paths + ",1" + "\"\n")
file.write("[HKEY_CLASSES_ROOT\YourApplication\shell]\n")
file.write("[HKEY_CLASSES_ROOT\YourApplication\shell\open]\n")
file.write("[HKEY_CLASSES_ROOT\YourApplication\shell\open\command]\n")
file.write("@=\"\\\"" + paths +"\\\"\"%1\"\"\n")
res = os.system('D://tests.reg')