首页 > 编程语言 >通过网页打开winform程序

通过网页打开winform程序

时间:2023-04-11 15:45:45浏览次数:39  
标签:网页 name 程序 regWrite Registry 注册表 Close string winform

winform页面代码:

        /// <summary>
        /// 注册表的写入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiWriteRegister_Click(object sender, EventArgs e)
        {
            try
            {
                GetRegistData("FysyDataCenter");
                MessageBox.Show("注册成功");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            
        }

        /// <summary>
        /// 写入注册表以使用网页唤醒程序
        /// </summary>
        public static void GetRegistData(string name)
        {
            /**搜索到注册表根目录**/
            RegistryKey hkml = Registry.ClassesRoot;
            /**搜索到注册表根目录下的name文件夹**/
            RegistryKey software = hkml.OpenSubKey(name, true);
            if (software == null)
            {
                /**注册表未注册,添加注册表**/
                Enroll(name);
            }
        }

        /// <summary>
        /// 写入注册表
        /// </summary>
        public static void Enroll(string name)
        {
            /**获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。**/
            string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            RegistryKey regWrite = Registry.ClassesRoot.CreateSubKey(name);

            regWrite.SetValue(name.ToLower(), @"URL:" + str);
            regWrite.SetValue("URL Protocol", "URL Protocol");//不行可以删来看看
            regWrite.Close();

            regWrite = Registry.ClassesRoot.CreateSubKey(name + @"\shell");
            regWrite.Close();
            regWrite = Registry.ClassesRoot.CreateSubKey(name + @"\shell\open");
            regWrite.Close();
            regWrite = Registry.ClassesRoot.OpenSubKey(name + @"\shell\open", true);
            RegistryKey aimdir = regWrite.CreateSubKey("command");
            /**获取程序运行地址**/
            string BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string AppPath = Path.Combine(BaseDirectory, name + ".exe");

            aimdir.SetValue(@"", "\"" + str + "\" \" %1\"");
            regWrite.Close();
            aimdir.Close();
        }

可以在注册表中的: 计算机\HKEY_CLASSES_ROOT\FysyDataCenter看到;

注册完之后,你就可以用唤醒的名字去浏览器输入FysyDataCenter://,然后回车就出现一个要打开FysyDataCenter程序的弹窗了。

标签:网页,name,程序,regWrite,Registry,注册表,Close,string,winform
From: https://www.cnblogs.com/zzgxl/p/17306447.html

相关文章

  • c#之winform—listview中排序 和 ICompare接口和IComparer接口的比较
    要在listview中实现排序,需要用listview.Sorting属性,它接受一个枚举类型的值list_view.Sorting=SortOrder.Ascending;//1为正序>其中None=0,//不排序Ascending=1,//升序Descending=2//降序然后在将ListViewItemComparer这个类的实例......
  • 选择小程序开发公司的注意要点
    选择小程序开发公司时,需要注意以下几点:技术能力:要了解小程序开发公司的技术能力,比如其开发小程序的技术架构和经验,可以通过调查、访谈等方式了解小程序开发公司能力是否符合预期。技术支持:小程序开发公司的技术支持比较重要,它能够确保程序的开发和运行,而且能够根据客户的要......
  • 重试,让程序更健壮
    任何通过网络与其它应用通讯地的程序,都应该有足够的灵活性,来应对短暂的临时性故障。因为这些故障很多时候是可以自恢复的。例如,为了避免服务过载,很多应用会采取某些限流措施,在并发请求达到一定数量时,暂时性的拒绝新的请求加入。这种情况下,尝试使用该应用的程序,一开始可能会被拒绝......
  • winform程序在不同操作系统下的兼容问题
    建议用.netframework3.5作为生成目标,CPU设置为any来开发,然后在app.config文件里加上<?xmlversion="1.0"encoding="utf-8"?><configuration><startupuseLegacyV2RuntimeActivationPolicy="true"><supportedRuntimeversi......
  • 如何在移动应用开发中,用小程序实践灰度发布策略
    在当今移动应用市场竞争激烈的环境下,如何更快地发布新版本、更精确地测试和调整、更好地了解用户需求和行为,成为了每个App开发者面临的重要挑战。在这个背景下,灰度发布和小程序容器技术成为了越来越受欢迎的解决方案。 灰度发布是指将新版本应用程序推送给一部分用户进行测......
  • Python程序笔记20230303
    成绩评级程序分数<60,D60<=分数<80,C80<=分数<90,B90<=分数<100,A分数==100,S#输入分数score=int(input("请输入分数:"))#判断评级ifscore<0orscore>100:print("无效的分数")elifscore<60:print("......
  • AI 绘画 API 超详细使用教程 - 附微信小程序接入代码
    写在前面【AI绘画/AI图像生成】已成为现下炙手可热的话题,AI大模型训练的成本高昂,算法研究时间周期较长,对于大多数人来说,自研一套算法模型还是非常困难的,因此AI绘画API就应运而生,直接调用AI绘画API就能轻松将先进的图文AI融入到我们的产品中,使用门槛是非常低的。 本......
  • Python程序笔记20230302
    Alice、Bob和他们的朋友们问题主体密码学家Rivest、Shamir、Adleman于1977年4月撰写了一篇论文《数字签名与公钥密码学》(OnDigitalSignaturesandPublic-KeyCryptosystems),并投稿至了一个期刊上,不过很遗憾这篇论文被拒稿了。随后他们修改了论文,并将论文重新命名为《一种实......
  • Python程序笔记20230301
    打印九九乘法表foriinrange(1,10):forjinrange(1,i+1):print(i,"x",j,"=",i*j,end='')print("\n")第三行的print(i,"x",j,"=",i*j,end='')打印出i和j的乘积,并在末尾添......
  • uniapp小程序使用高德地图api实现路线规划
    uniapp小程序使用高德地图api实现路线规划 Postedon 2023-01-1011:18  书中枫叶 阅读(1387) 评论(3)  编辑  收藏  举报路线规划简介路线规划常用于出行路线的提前预览,我们提供4种类型的路线规划,分别为:驾车、步行、公交和骑行,满足各种的出行场景。高德开放......