浏览器打开exe程序

 js通过注册表打开exe程序

html页面

   

<a id="zh" class="link" href="AlterID://"><img src="img/2.jpg"/>打开</a>

注册表文件
新建文本文件,修改为注册表name.reg文件,文件名随便写,文件由鼠标右键的形式编辑项打开编写

   

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\注册表名称]
@="URL:注册表名称 Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\注册表名称\DefaultIcon]
@="E:\\QQ\\qq.exe"
[HKEY_CLASSES_ROOT\注册表名称\shell]
[HKEY_CLASSES_ROOT\注册表名称\shell\open]
[HKEY_CLASSES_ROOT\注册表名称\shell\open\command]
@="\"E:\\QQ\\qq.exe\" \"%1\""

1. 修改注册表名称(随便起)
2. 修改exe程序文件路径,文件路径以\\隔开

判断是否有注册表文件
思路:由浏览器失去焦点事件判断是否有注册表,因为如果有注册表的话,会打开exe程序,从而浏览器会失去焦点,反之没有注册表(这个方法有很大的问题,因为如果没有exe程序的话,他也打不开程序,所以他也会判断成为没有注册表,但是也没有什么好的办法)
如果没有注册表的话,在服务器上写好注册表文件,通过下面的链接触发下载事件

通过a标签下载

   

<a id="a1" download='protocal.reg' href="http://localhost/protocal.reg" style="display: none;"></a>

JavaScript:   

<script>
        var links = document.getElementsByClassName('link')
        var readyToBlur = false
        var hasPlugin = null
        var timeout = 3000
        window.addEventListener('blur', function () {
            if (readyToBlur) {
                hasPlugin = true
            }
        })
        for (var i = 0; i < links.length; i++) {
            (function (id, win) {
                links[id].addEventListener('click', function () {
                    readyToBlur = true
                    hasPlugin = false
                    window.location.href = links[id].getAttribute('data-link')
                    var t = setTimeout(function () {
                        win.readyToBlur = false
                        !hasPlugin && onHasNoPlugin(links[id].id)
                        clearTimeout(t)
                    }, timeout)
                })
            })(i, window)
        }
        function onHasNoPlugin(pluginName) {
            // console.log(pluginName);
            //这是个弹出框,我使用的是layui的弹出框
            layui.use("layer",function(){
                layer.confirm('缺少路径文件,是否下载', {
                    btn: ['确定','取消'] //按钮
                }, function(){
                    layer.close(layer.index);
                    //通过js控制a链接,从而触发下载
                    var el=document.getElementById('a1');
                    el.target = '_new'; //指定在新窗口打开
                    el.click();//触发打开事件
                });
            });
        }

    </script>

    

 

    原文作者:~道痕~
    原文地址: https://blog.csdn.net/manprogrammer/article/details/100121090
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞