精华内容
参与话题
问答
  • 请大侠帮我改写下面代码,用WriteRegStr写入注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\openExeTest] "URL Protocol"="d:\\notepad.exe" ...@="\"d:\\notepad.exe\" \"%1\""
  • 网页打开exe

    2019-04-16 10:25:07
    网页打开exe
                         

    网页上打开本地的exe文件,可以吗?

    西蒙说:可以的。

    方法如下:

     

    1、定义一个私有协议,指向本地的那个exe 
      2、在网页上将此私有协议作为URL,点击之即可打开那个exe
      3、URL中还可以包含参数,传递给那个exe

    1、定义一个私有协议
    协议,http就是一个众所周知的例子。在浏览器中输入这个东东,浏览器就能明白是打开一个网页。那么,这个私有协议,就是用来打开我们那个该死的exe的。

    私有协议怎么定义?很简单,修改注册表。写一段脚本,正确命名文件后缀,双击,windows能识别并运行,修改注册表。

    示例,记事本打开,输入脚本如下:

    Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\HYZT]@="URL:HYZT Protocol Handler""URL Protocol"=""[HKEY_CLASSES_ROOT\HYZT\shell][HKEY_CLASSES_ROOT\HYZT\shell\open][HKEY_CLASSES_ROOT\HYZT\shell\open\command]@="E:\\hyzt\\bin\\Debug\\hyzt.exe %1"
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    文件另存为:hyzt.reg。然后双击此文件,注册表即修改矣。文件可以多次修改,多次运行。新修改覆盖原来。

    如此,我们就定义了一个私有协议:hyzt。

    2、URL中包含此协议
    现在,在本机浏览器地址栏中输入hyzt://,回车,即可打开那个该死的exe了。IE是可以的,chrome的话,浏览器中直接输入有时不行,可以定义一个书签(类似IE收藏夹中的收藏),点击就可以了。

    学习http协议的时候,我们会接触两个名词:URI 和 URL。二者有啥区别?

     

    URI,统一资源定位符;URL,统一资源位置符。简单来讲, URL = 协议 + URI。

    比方说,www.baidu.com是一个URI,而http://www.baidu.com是一个URL。

    也就是说,URL不仅仅标明资源的位置,而且标明访问资源的方法(协议)。http是一种协议,我们那个hyzt,也是一种协议。

    3、URL中传递参数给exe
    我们用 hyzt:// 就可以打开exe。如果想传参数该咋办?可以类似酱紫:

    hyzt://1000,chenqu
    • 1

    注意,exe接收到的参数,并不是 1000,chenqu,而是完整的 hyzt://1000,chenqu

    附exe接收参数并处理:

    namespace TackColor{    static class Program    {        /// <summary>        /// 应用程序的主入口点。        /// </summary>        [STAThread]        static void Main(string[] paras)        {            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            Application.Run(new Form1(paras));        }    }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    namespace TackColor{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        string _UserId = "0";        string _UserName = "";        public Form1(string[] paras) : this()        {            pickupParam(paras);        }        private void Form1_Load(object sender, EventArgs e)        {            MessageBox.Show(String.Format("用户ID:{0},用户名:{1}",this._UserId,this._UserName));        }        void pickupParam(string[] paras)        {            if(paras == null && paras.Length == 0)            {                return;            }            string p = paras[0];            Regex rx = new Regex(@"hyzt\://(?<p>[^/]+)/?", RegexOptions.Compiled | RegexOptions.IgnoreCase);            Match m = rx.Match(p);            if(m.Success)            {                string[] ps = m.Result("${p}").Split(',');                if(ps.Length > 0)                {                    this._UserId = ps[0];                }                if (ps.Length > 1)                {                    this._UserName = ps[1];                }            }        }    }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    这里写图片描述

    4、私有协议与程序安装包结合
    私有协议里面,明确指明了相应的可执行文件的路径:

    [HKEY_CLASSES_ROOT\HYZT\shell\open\command]@="C:\\hyzt\\bin\\Debug\\hyzt.exe %1"
    • 1
    • 2

    问题是,每台客户机实际情况千差万别,比如本例子中,有些机器根本没有C盘,可执行文件可能装在D盘。那么这个注册表文件在运行前,都要手动改一下吗?
    一个思路是,这个注册表修改工作放在程序的安装包里。用户安装的时候,就将私有协议写进去。

               
    展开全文
  • 网页如何打开exe文件

    2020-11-19 10:03:04
    如何在网页打开本地exe文件。 解决方法: 需要借助注册表,本来是手动创建的注册表,但发现到确认打开的时候,软件无法启动,最后选择了脚本写入注册表的方法。具体如下: ①新建文本文档,输入如下信息后,保存...

    书写不易,喜欢的点个关注,谢谢

    问题:

    如何在网页上打开本地exe文件。(该方法有效,如有问题的可评论解决

    解决方法:

    需要借助注册表,本来是手动创建的注册表,但发现有问题,到网页点击打开的时候,软件没有响应,最后选择了脚本写入注册表的方法,完美解决问题。具体如下:
    ①新建文本文档,输入如下信息后,保存格式为.reg格式:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\Webshell]
    @="URL:Webshell Protocol Handler"
    "URL Protocol"=""
    [HKEY_CLASSES_ROOT\Webshell\DefaultIcon]
    @="D:\\DingDing\\DingtalkLauncher.exe"
    [HKEY_CLASSES_ROOT\Webshell\shell]
    [HKEY_CLASSES_ROOT\Webshell\shell\open]
    [HKEY_CLASSES_ROOT\Webshell\shell\open\command]
    @="\"D:\\DingDing\\DingtalkLauncher.exe\" \"%1\""
    

    保存为以下格式的文件:
    在这里插入图片描述

    软件路径记得改为自己的
    在这里插入图片描述双击执行.reg文件后,发现注册表加入了名为Webshell的注册表文件
    在这里插入图片描述此时页面便可以打开本地exe文件

    <div>
        <a href="Webshell://">open</a>
    </div>
    
    展开全文
  • 首次接到“利用网页打开本地exe文件”这个任务时,还真有点摸不着头脑,后来细想,在淘宝上点击卖家的旺旺能开启本地的旺旺,这不就是利用的网页打开本地exe文件吗? 了解这种实实在在存在的合理需求后,开始调查。...

    首次接到“利用网页打开本地exe文件”这个任务时,还真有点摸不着头脑,后来细想,在淘宝上点击卖家的旺旺能开启本地的旺旺,这不就是利用的网页打开本地exe文件吗?

    了解这种实实在在存在的合理需求后,开始调查。经过网上搜索查询,主要归纳为两种实现方式,方式一:利用JS打开本地exe文件。一般浏览器,由于安全问题,都会禁止掉这个特性,这就导致部分浏览器不支持该种方式。方式二:利用浏览器外部协议(URL Procotol)打开本地exe文件。用这种方式实现,任何浏览器都兼容。在实际开发中,当然首选方式二。

    一、利用注册表文件将外部协议写入注册表

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\PCTV]
    @="PCTVProtocol"
    "URL Protocol"="\"C:\\Program Files (x86)\\PCTV双模软终端_64位\\PCTV.exe\""
    
    [HKEY_CLASSES_ROOT\PCTV\DefaultIcon]
    @="\"C:\\Program Files (x86)\\PCTV双模软终端_64位\\PCTV.exe,1\""
    
    [HKEY_CLASSES_ROOT\PCTV\shell]
    
    [HKEY_CLASSES_ROOT\PCTV\shell\open]
    
    [HKEY_CLASSES_ROOT\PCTV\shell\open\command]
    @="\"C:\\Program Files (x86)\\PCTV双模软终端_64位\\PCTV.exe\" \"%1\""
    

     将以上代码存入reg文件中,双击文件执行即可。在浏览器中输入“pctv://”或“pctv://param1,param2”,执行后即可打开对应路径下的exe文件。

    二、 在安装exe文件时将外部协议写入注册表

    在实际部署中,不会让客户安装完程序再手动单击注册表文件将安装路径写入注册表,最容易让人接受的方式就是在安装exe文件时将安装路径写入注册表。利用Inno Setup打包exe文件时,在脚本中加入如下代码即可:

    [Registry]  
    Root:HKCR;Subkey:"PCTV";ValueType:string;ValueName:"URL Protocol";ValueData:"{app}\{#MyAppExeName}";Flags:createvalueifdoesntexist uninsdeletekey 
    Root:HKCR;Subkey:"PCTV\DefaultIcon";ValueType:string;ValueData:"{app}\{#MyAppExeName}";Flags:createvalueifdoesntexist uninsdeletekey   
    Root:HKCR;Subkey:"PCTV\shell";Flags:createvalueifdoesntexist uninsdeletekey 
    Root:HKCR;Subkey:"PCTV\shell\open";Flags:createvalueifdoesntexist uninsdeletekey 
    Root:HKCR;Subkey:"PCTV\shell\open\command";ValueType:string;ValueData:"{app}\{#MyAppExeName} ""%1""";Flags:createvalueifdoesntexist uninsdeletekey
    

      这样,在浏览器中输入“pctv://”或“pctv://param1,param2”,执行后即可打开对应路径下的exe文件。

      以上两种写入注册的方式,允许在外部协议中带参数。

    三、遇到的问题

    在利用外部协议打开本地exe文件时,通过查看日志记录,看到会出现路径不对的问题。通过查看代码在程序中用Environment.CurrentDirectory获取可执行文件的路径,但是通过浏览器打开exe文件时,Environment.CurrentDirectory获取的是浏览器exe文件的路径,这样在程序中就会报错。解决方法是将Environment.CurrentDirectory修改为Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory)即可。

    转载于:https://www.cnblogs.com/glepooek/p/9006501.html

    展开全文
  • chrome网页打开exe

    2019-05-07 21:08:00
    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\VMS] @="URL:VMS" "URL Protocol"="" [HKEY_CLASSES_ROOT\VMS\DefaultIcon] @="chrome.exe,1" [HKEY_CLASSES_ROOT\VMS\shell] [HKEY_CLASSE...

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\VMS]
    @="URL:VMS"
    "URL Protocol"=""

    [HKEY_CLASSES_ROOT\VMS\DefaultIcon]
    @="chrome.exe,1"

    [HKEY_CLASSES_ROOT\VMS\shell]

    [HKEY_CLASSES_ROOT\VMS\shell\open]

    [HKEY_CLASSES_ROOT\VMS\shell\open\command]
    @="E:\\Debug\\CameraPlayer.exe  %1"

     

    以上内容另存为WebCall.reg,替换最后一行为实际要打开的exe文件全路径  最后的%1代表参数

    双击导入注册表

    网页中加入

    <a href="VMS://uuid,admin,张三"> vms </a>

    浏览网页 点击超链接即可打开exe

     

    程序中接受传递的值

    Main函数中

    MessageBox.Show(e.Args.Length + "|" );

    if (e.Args.Length > 0)
    {
    string arg = e.Args[0];

    string para = arg.Substring(arg.IndexOf(":")+1, arg.Length- arg.IndexOf(":") -1);
    string[] params= para.Split(',');

    }

     

    From:https://www.cnblogs.com/xuejianxiyang/p/10828106.html

    转载于:https://www.cnblogs.com/xuejianxiyang/p/10828106.html

    展开全文
  • 网页打开本地exe程序

    万次阅读 2017-12-29 12:58:41
    最近的项目因为是不同老师开发的,所以整合到一起很麻烦,需要用网页调用部分老师写的exe程序。 本来以为不可实现,后来发现,实现也很简单。 1、打开注册表 win+r 在注册表的最上面HKEY_CLASSES_ROOT 右键...
  • 网页打开EXE程序

    2013-08-17 15:58:25
    首先要保证安全级别 请更改你的IE的安全级别:开始->设置->控制面板->Internet选项->安全->自定义级别->对没有标记为安全的ActiveX控件进行初始化和脚本运行->启用' ... ...function Run(strPath) {
  • 1.win+r 打开注册表 2.选择HKEY_CLASSES_ROOT 右键——新建——项 项名称为:zkw 3.点击zkw右键新建——项,依次建立 如图所示的项,注意DefaultIcon与shell是同级项,不要把shell项放在DefaultIcon下 4.选择名称...
  • 运行 (“exe文件路径”, 假, ) 打开网站--------按钮被单击事件 直接复制以下代码即可 .版本 2 .支持库 eAPI .子程序 _按钮60_被单击 打开指定网址 (“网址”) 转载于:http...
  • 浏览器网页链接打开本地exe程序

    千次阅读 2018-08-29 14:05:29
    浏览器网页超链接打开本地exe程序的方法 一 、加注册表 新建 aclient.reg 文件,加入以下代码,双击运行aclient.reg,就会将以下信息加到注册表中 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\a...
  • 我们如何使用浏览器网页链接打开本地 exe 客户端程序? 步骤如下 新建注册表文件 szztClient.reg, 客户端的名称和客户端的地址可以自己定义。 [HKEY_CLASSES_ROOT\szztClient] @="szztClientProtocol" "URL ...
  • Registering the Application Handling the Custom URI Scheme To register an application to handle a particular URI scheme, add a new key, along with the appropriate subkeys and values, to HKEY_CL...
  • 打开注册表 1. 输入win+R 2.输入regedit 确定,进入注册表 注册表中配置 1. 在HKEY_CLASSES_ROOT文件目录下,右键---新建---项,项的名称为ZFBA 2. 在新建的项ZFBA文件中依次按照下图中的文件...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 最近在做项目的时候,遇到了一个需求,是需要前端打开本地安装的exe客户端软件,并且需要传参数,进行客户端免密登陆。刚开始碰到这个需求的时候,一脸茫然,不知道怎么做,...参考文档: 用网页打开本地exe程序. ...
  • 转自 磐石编程网:http://www.panshy.com/ 代码只有一行,使用了一个函数:
  • 如题,本文实现的是在windows环境下python编写脚本实现打开测试的网站,作为运维人员,每天一个个打开网页实在繁琐,这里将其归合成一个脚本,并且打包成exe,方便在别的没有安装Python环境的机器上面运行 ...
  • iexplore.exe 打开网页 运行窗口输入 iexplore.exe https://www.baidu.com/?tn=sitehao123_15 就能打开百度主页 WinExec主要运行EXE文件 **  ⑴ 函数原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);  ⑵...

空空如也

1 2 3 4 5 ... 20
收藏数 1,206
精华内容 482
关键字:

网页打开exe