WEB项目通过浏览器打开windows上的exe应用

一、背景

最近有一个新需求,是通过浏览器打开本地exe应用。因为我们公司的产品是以exe为主,用web项目管理数据,接到的新项目是web为企业门户需要集成所有的应用,前端通过按钮点击打开本地exe应用。一开始还有点懵,因为我做B/S很多年,但是从来没考虑或尝试从浏览器打开本地exe,但是技术呢,肯定是可以实现的,因为可以参考百度网盘,通过浏览器打开以后,下载东西,如果文件过大,会提示使用本地客户端下载,浏览器就会弹出对应窗口用来打开exe应用。所以技术路线肯定没问题,剩下的就是看怎么实现了。还是比较简单的,毕竟就是把双击的操作使用脚本代码来实现。

二、技术探索

1.单机应用考虑

一开始我一直以为是在本机使用的,所以很简单啊,本机启动浏览器,然后点击按钮,通过接口调用后端方法,后端方法实现打开本地exe应用即可。
在这里插入图片描述
接下来只要完成后端的功能接口即可,我先找了个demo来尝试通过java打开本地exe。实现有多种方式,代码呢也非常简单,几行代码即可。

以下也给出了2种实现方式:

方式一:

代码就2行

public static void main(String[] args) throws IOException {
        String exePath = "C:\\Program Files\\Tencent\\QQNT\\QQ.exe";
        Runtime.getRuntime().exec(exePath);
    }

上面的地址要填你要打开应用的地址,如下图:
在这里插入图片描述
运行main方法就能打开QQ
在这里插入图片描述

方式二:

public static void main(String[] args){
        String exePath = "C:\\Program Files\\Tencent\\QQNT\\QQ.exe";
        BufferedReader br = null;
        BufferedReader brError;
        String line = null;
        try {
            Process p = new ProcessBuilder(exePath).start();
            br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            brError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
            while ((line = br.readLine()) != null || (line = brError.readLine()) != null) {
                //输出exe输出的信息以及错误信息
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

运行程序,也可以打开。
在这里插入图片描述

至此单机版的实现。先说结论,这个不能够使用,因为存在严重的问题。我们的web门户系统是放在服务器上的(是公用的服务),客户端是有多个的,客户想要实现的是,从A电脑访问门户系统,点击打开exe应用按钮,就打开A电脑的exe。从B电脑访问门户系统,点击打开exe应用按钮,就打开B电脑的exe。。。其他也同理。所以单机版的就不能实现,他打开的永远是本机的exe应用,服务器首先不是windows系统的,其次服务器上也没装exe应用。放到服务器上连最基本的都不能实现。

2.服务器客户端考虑

经过分析,我觉得还是自己想的太简单了。如果要通过服务器,去打开本机的exe应用,那我想本机一定得有一个守护线程,并且这个服务是实时在线的,可能随本机启动而自启动,永远在线,等待服务器的调用,通过门户系统点击了打开本地exe按钮后,浏览器发送请求到守护线程的服务,守护线程去调用打开exe的方法。调起肯定是从浏览器发起了,协议选择了Websocket。至于为什么不选择http,是因为从服务器调用本机,服务器需要实时获取本机地址,并且拼接请求地址,比较复杂。Websocket使用协议不同,固定地址为本机(127.0.0.1)即可。点击打开exe按钮时建立连接,并发送调起exe应用的请求。
在这里插入图片描述
这种方法应该是可以实现的,但是再我们开始做的时候,又找到了更简单的方法。

3.注册表修改探索

新建文件,修改后缀为reg,使用NotPad++打开编辑。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TestQ]
@="TestQProtocol"
"URL Protocol"="\"C:\\Program Files\\Tencent\\QQNT\\QQ.exe\""
[HKEY_CLASSES_ROOT\TestQ\shell] 
[HKEY_CLASSES_ROOT\TestQ\shell\open] 
[HKEY_CLASSES_ROOT\TestQ\shell\open\command]
@="\"C:\\Program Files\\Tencent\\QQNT\\QQ.exe\""

双击运行即可。注意运行reg文件的时候,千万不用放到含中文路径的目录下!同时编码格式要用ANSI。
在这里插入图片描述
编码可以在notPad++中调整。
在这里插入图片描述
添加完成后,可以按win+R 输入 regedit 查看注册表信息。通过以上路径可以找到自己添加的。如果没生效可以重启电脑尝试。
在这里插入图片描述
然后打开浏览器输入:

testq://

在这里插入图片描述
至此通过浏览器打开客户端的问题解决。

建议:可以在本公司的exe应用程序安装的时候将注册表信息一块添加到电脑上。到时候直接浏览器访问即可。

三、最后

通过本次需求,学到了浏览器打开exe应用的技术,收益颇多。大家有类似需求的快试试吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/766676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Coze 国际版停止免费开启商业化

昨晚 Coze 国际版没有任何官方通知,悄悄开启了 Premium 服务,API 和 SDK 调用不再免费。 免费版只提供每日 10 条消息,最低的 9 刀套餐,每日最多 100 条消息,GPT-4o 最多 10 条。 国内版目前还是免费的,但…

大数据之FlinkCDC

最近在做FLinkCDC数据实时同步的数据抽取处理 目标: 将源端系统Oracle数据库的实时数据通过FLINKCDC的形式抽取到Doris中 问题: 在抽取的过程中,如果表的数据量太大,抽取超过30张表以后,所有的任务大概运行25~30分钟以后,所有的任务的状态会从running 变为 Failed. 解决方案…

BitLocker 的作用是什么?如何开启或者关闭它?

BitLocker 是什么 BitLocker 是一种全盘加密(FDE)技术,最早在 Windows Vista 中引入,并在后续版本的 Windows 中得到了持续改进。BitLocker 使用高级加密标准(AES)来加密整个磁盘分区,确保只有…

国产集成DSP内核无线音频传输的无线接收芯片U1R32D

国产集成DSP内核无线音频传输的无线接收芯片 - U1R32D,是一款用于无线音频传输的接收芯片,配合无线发射芯片完成高品质无线音频传输。射频工作范围为UHF的500M~980MHz之间。由于集成了DSP内核及必要的外设,单芯片集成度高,性价比好…

电商控价:系统监测的必要性与优势

在品牌的发展进程中,会遭遇各种各样的渠道问题,控价乃是其中颇为关键的一环。品牌进行控价的目的无疑是为了妥善治理低价链接,低价链接的发现途径可以是人工,也可以是系统。力维网络在为上百个品牌提供服务的过程中察觉到&#xf…

前端FCP指标优化

优化前 第三方依赖按需引入之后,打包的总体积减小到初始值的55%,但是依然存在很大的js文件,需要继续优化 chunk-vendors.js进行分包之后 截图 compression-webpack-plugin压缩之后 截图

帕金森病患者常见的心理问题有哪些?

帕金森病患者中约有40%~55%出现抑郁症状,早期发现和干预治疗对于改善患者的生活质量至关重要。 帕金森病患者常见的心理问题主要包括以下几点: 情绪变化:患者可能会经历抑郁、焦虑、烦躁等不良情绪,这些情绪变化可能与疾病的进展…

HarmonyOS Next系列之Echarts图表组件(折线图、柱状图、饼图等)实现(八)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

KEYSIGHT N1092系列,DCA-M系列采样示波器连接与自检?

KEYSIGHT N1092系列 采样示波器,虽然省去了屏幕和操作系统,但根据不同的型号,可以配备不同数量的光口和电口,满足各种测试需求。本次介绍的具体型号为N1092D,它拥有4个光口,能够进行多种测试。 测试步骤详解…

UG NX二次开发(C++)-根据草图创建拉伸特征(UFun+NXOpen)

1、前言 UG NX是基于特征的三维建模软件,其中拉伸特征是一个很重要的特征,有读者问如何根据草图创建拉伸特征,我在这篇博客中讲述一下草图创建拉伸特征的UG NX二次开发方法,感兴趣的可以加入QQ群:749492565,或者在评论区留言。 2、在UG NX中创建草图,然后创建拉伸特征 …

OpenStack开源虚拟化平台(二)

目录 三、对象存储服务Swift(一)Swift特性(二)应用场景(三)Swift主要组件(四)Swift基本原理(五)实例分析 四、镜像服务Glance(一)Glan…

PostgreSQL的pg_filedump工具

PostgreSQL的pg_filedump工具 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777pg_filedump 是一个工具&#x…

ubuntu运行qq音乐闪退

ubuntu运行qq音乐闪退 修改/usr/share/applications中的qqmusic.desktop,在Exec后加上 --no-sandbox,如下图所示: 该文件有可能是只读,权限不够的话用sudo vim qqmusic.desktop

PyCharm远程开发

PyCharm远程开发 1- 远程环境说明 每个人的本地电脑环境差别很大。各自在自己电脑上开发功能,测试/运行正常。但是将多个人的代码功能合并,运行服务器上,会出现各种版本兼容性问题。 在实际企业中,一般会有两套环境。第一套是测…

离子液体(ILs)在电化学领域应用前景广阔 海外企业占据全球市场主导地位

离子液体(ILs)在电化学领域应用前景广阔 海外企业占据全球市场主导地位 离子液体(ILs)又称离子性液体,指在室温或接近室温条件下,完全由阴阳离子组成的液态盐。与传统有机溶剂相比,离子液体具有…

短视频电商源码的优势及软件架构解析

短视频电商源码是目前电商行业中非常火热的一个新兴领域,它通过短视频内容和电商商品的结合,为用户提供了一种新的购物体验。下面将介绍短视频电商源码的优势以及软件架构。 首先,短视频电商源码具有以下几个优势: 1、创新的购物体…

观众为何偏爱采用多媒体互动技术的博物馆展览?

昔日踏入博物馆,映入眼帘的尽是静谧的展柜与沉默不语的展品,它们静静地诉说着过往的故事,却与参观者之间隔着一道无形的墙。但如今,想象力跨越了界限,多媒体互动技术如同魔法般降临,赋予这些历史遗珍以新的…

进程以及多线程编程

文章目录 什么是进程/任务(Process/Task)进程控制块抽象(PCB Process Control Block)PID(进程的 id /标识符)内存指针文件描述符表状态优先级上下文记账信息 线程(Thread)进程和线程的区别线程的优点: 多线程代码代码示例(继承Thread类的方式)sleep(休眠…

k8s部署单机版xxl-job

一、初始化数据库 https://github.com/xuxueli/xxl-job/blob/2.3.1/doc/db/tables_xxl_job.sql # # XXL-JOB v2.3.1 # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS xxl_job default character set utf8mb4 collate utf8mb4_unicode_ci; use xxl_job;…

数据库安全:MySQL权限体系划分与实战操作

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…