通过JS启动本地exe程序

3,032 阅读1分钟

IE 浏览器

通过 IE 的 ActiveX 控件实现。利用 ActiveXObject 对象,通过脚本的方式调用 cmd,并执行打开本地应用程序的命令。

下面是通过 IE 打开火狐浏览器的示例代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>通过IE打开火狐浏览器</title>
    </head>
    <body>
        <button onclick="test()">测试</button>
 
        <script>
            function test() {
                // 判断是否为 IE 浏览器
                if (typeof ActiveXObject !== 'undefined') {
                    // IE 浏览器
                    try {
                        var objShell = new ActiveXObject('WScript.Shell');
                        var result = objShell.Run('cmd.exe /c start firefox.exe http://www.baidu.com', 0, true);
                        if (result !== 0) {
                            // 未安装火狐
                        }
                    } catch (e) {
                        // Automation 服务器不能创建对象——未启用 ActiveX 控件
                    }
                } else {
                    // 非 IE 浏览器处理
                }
            }
        </script>
    </body>
</html>

注意:使用该方式,首先需要启用 IE 的 ActiveX 控件。

IE  ActiveX 控件启用说明

第一步:打开IE浏览器,选择工具栏中的工具 -> Internet选项 image.png

第二步:选择【安全】标签 –> Internet -> 单击自定义级别; image.png

第三步:在单击自定义级别打开的面板中,找到ActiveX控件和插件,启用下图红框圈出的相应选项; image.png image.png

第四步:设置完成后,单击确定退出设置区域;重启IE浏览器,即可生效。

通用方法(支持IE/火狐/谷歌)

通过注册表方式启动本地 exe 程序。

第一步:新建 .reg 注册表文件

image.png

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\myWebshell]
@="URL:myWebshell Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\myWebshell\DefaultIcon]
@="D:\\Soft\\Navicat Premium\\navicat.exe"
[HKEY_CLASSES_ROOT\myWebshell\shell]
[HKEY_CLASSES_ROOT\myWebshell\shell\open]
[HKEY_CLASSES_ROOT\myWebshell\shell\open\command]
@="\"D:\\Soft\\Navicat Premium\\navicat.exe\" \"%1\""

第二步:双击执行 .reg 文件,添加到注册表。 image.png

第三步:在网页上创建调用链接:协议名://+自定义参数

<a href="myWebshell://hello">打开 Navicat </a>

判断协议是否存在

使用 protocolcheck.js 库实现。

protocolCheck(`myWebshell://hello`, function () {
       alert('当前电脑未检测到 myWebshell 程序。');
});