以VSDebug.exe为例,程序路径D:\软件代码\代码调试\VSDebug\VSDebug\bin\Debug\VSDebug.exe
1 /// <summary> 2 /// 写入注册表以使用网页唤醒程序 3 /// </summary> 4 public static void GetRegistData() 5 { 6 //string name = "VSDebug"; 7 //搜索到注册表根目录 8 RegistryKey hkml = Registry.ClassesRoot; 9 //搜索到注册表根目录下的XXX文件夹。 10 RegistryKey software = hkml.OpenSubKey("VSDebug", true); 11 //RegistryKey aimdir = software.OpenSubKey("calculate", true); 12 //registData = software.GetValue(name).ToString(); 13 if (software == null) 14 { 15 //注册表还没注册。 16 Enroll(); 17 } 18 else 19 { 20 Console.WriteLine("你已经注册了"); 21 Console.ReadLine(); 22 } 23 //return registData; 24 } 25 26 /// <summary> 27 /// 写入注册表 28 /// </summary> 29 public static void Enroll() 30 { 31 /**获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。**/ 32 string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; 33 try 34 { 35 Console.WriteLine("正在查找已经注册的程序....."); 36 RegistryKey key = Registry.ClassesRoot; 37 key.DeleteSubKeyTree(@"VSDebug"); 38 Console.WriteLine("已经清除注册程序....."); 39 } 40 catch (Exception e) 41 { 42 Console.WriteLine("未找到注册的程序..."); 43 Application.DoEvents(); 44 } /*===============================================*/ 45 Console.WriteLine("开始注册程序...."); 46 //后面引用的是唤醒的名字。 47 RegistryKey regWrite = Registry.ClassesRoot.CreateSubKey("VSDebug"); 48 49 regWrite.SetValue("vsdebug", @"URL:D:\软件代码\代码调试\VSDebug\VSDebug\bin\Debug\VSDebug.exe"); 50 regWrite.SetValue("URL Protocol", "URL Protocol");//不行可以删来看看 51 regWrite.Close(); 52 53 regWrite = Registry.ClassesRoot.CreateSubKey(@"VSDebug\shell"); 54 regWrite.Close(); 55 regWrite = Registry.ClassesRoot.CreateSubKey(@"VSDebug\shell\open"); 56 regWrite.Close(); 57 regWrite = Registry.ClassesRoot.OpenSubKey(@"VSDebug\shell\open", true); 58 RegistryKey aimdir = regWrite.CreateSubKey("command"); 59 //获取程序运行地址。 60 string BaseDirectory = AppDomain.CurrentDomain.BaseDirectory; 61 string AppPath = Path.Combine(@"D:\软件代码\代码调试\VSDebug\VSDebug\bin\Debug\", "VSDebug.exe"); 62 63 aimdir.SetValue(@"", "\"" + AppPath + "\" \" %1\""); 64 regWrite.Close(); 65 aimdir.Close(); 66 }
因为注册表注册的时候是要管理员权限的,所以下面是获取管理员权限的一直办法。
![](/i/l/?n=23&i=blog/2982521/202211/2982521-20221129104433469-886239036.png)
注册完之后,你就可以用唤醒的名字去浏览器输入VSDebug://,然后回车就出现一个要打开VSDebug程序的弹窗了。
原文路径:https://www.cnblogs.com/lianglingui/archive/2022/11/28/16812362.html
标签:RegistryKey,网页,Console,regWrite,Registry,注册表,VSDebug,唤醒,winform From: https://www.cnblogs.com/ny-wmq/p/16934765.html