使用web调用本地的程序(windows)

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')




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm 是一种适用于 Windows 操作系统的桌面应用程序开发技术,而 WebAPI 则是一种应用程序接口,它提供了一种基于 HTTP 的通信接口,可以与不同平台和编程语言实现的系统进行交互和数据传输。 在 WinForm 应用程序中,我们可以通过调用 WebAPI 接口下载文件。首先需要定义 WebAPI 接口的 URL 地址和目标文件路径,在应用程序中通过 HTTP 请求向服务器端发送请求并获取响应结果。如果下载的文件较大,建议使用多线程方式进行下载,可以大大提高文件下载的速度。 具体实现方式如下: 1. 定义 WebAPI 接口 URL 地址和目标文件路径,可以通过配置文件或者程序代码中直接设置参数。例如:http://www.example.com/downfile?path=FilePath。 2. 在 WinForm 应用程序中创建 HttpClient 对象,通过发送 HTTP 请求调用 WebAPI 接口,获取文件流数据。 3. 利用 FileStream 对象创建本地文件,并将文件流数据保存到本地磁盘上。 4. 如果需要加速文件下载,可以采用多线程方式下载。在 WinForm 应用程序中,可以使用 C# 中的 Task 或者 ThreadPool 实现多线程下载,这样可以同时下载多个文件块,极大地提高了下载速度。 需要注意的是,在下载文件时,应注意下载进度,及时反馈文件下载进度和下载完成状态。同时也需要注意网络传输安全问题,例如避免下载可能包含病毒或恶意脚本的文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值