浏览器打开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>

    


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值