C#、Windows注册表、使目标应用成自定义协议的默认应用

  • 几句牢骚
  • 什么问题
  • 解决方式
      • 一、在注册表中HKEY_CLASSES_ROOT项下
        • 1、自定义协议
        • 2、定义指向协议的项
      • 二、在HKEY_CLASSES_ROOT\applications项下
        • 1、定义自己应用的项
      • 三、在HKEY_LOCAL_MACHINE\SOFTWARE\Clients\项下
        • 1、定义协议与应用关联的配置信息项
      • 四、在HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications项中
        • 1、定义应用路径关联的配置信息
      • 五、打完收功
      • 六、VS生成应用前预先设置注册表
    • 说明与总结

几句牢骚

此段为牢骚,毫无营养,直入主题请略过。
每次在解决开发上的一些难题后,总想着找个时间记录一下,方便自己日后遇到再来翻翻解决思路和方式、也为其他同行提供些微不足道的参考。但是在空闲时间,懒虫总能强势的压制我记录的欲望,以至于现在一篇记录都没有,回头一想,感觉失去了很多宝贵的东西,心头那个后悔啊,要不是我的左手妹妹使劲按住右手姐姐,就要挨姐姐几个大嘴巴子了。

牢骚发的差不多了,以下言归正传。

什么问题

最近才接触以C#做Windows应用开发的项目,在这方面的知识可谓白茫茫,但有Java语言基础和安卓开发经验,再加上度娘的帮助,搬砖搬瓦再添砖加瓦还算顺利。但有时候四处翻找依旧没找到砖和瓦的时候就让人闹心了,落发归根没法防。
就比如现在遇到的问题:
VS开发软件生成的应用,安装后可正常使用,需求要将此应用设置为自定义协议的默认应用,但在默认程序设置中,愣是找不到自己应用。

解决方式

test.exe为示列:
以下阐述添加项、键、值的地方,Windows7和Windows10都适用。

一、在注册表中HKEY_CLASSES_ROOT项下

1、自定义协议

建立一个自己的协议,以建立 tel 协议为例,步骤如下:

  1. HKEY_CLASSES_ROOT项右键新建项,项名为→ tel
  2. 修改 tel 项,将默认值的数据设为→URL:Tel Protocol,不必须为此数据。
  3. tel 项右键新建二进制值,名称为→EditFlags,数据为→02 00 00 00,不必须为此数据。
  4. tel 项右键新建字符串值,名称为→FriendlyTypeName,数据为→URL:tel,不必须为此数据。
  5. tel 项右键新建字符串值,名称为→URL Protocol,无数据。
  6. tel 项右键新建项,项名为→ shell,内容不用修改。
  7. shell 项右键新建项,项名为→ open,内容不用修改。
  8. open 项右键新建项,项名为→ command,将默认值的数据设为**“E:\test.exe”
    “%1”**,第一个引号中为应用的绝对路径。
  9. 结果如下图所示。

2、定义指向协议的项

  1. HKEY_CLASSES_ROOT项右键新建项,项名为→ test.url.tel
  2. 修改 test.url.tel 项,将默认值的数据设为→URL Tel,不必须为此数据。
  3. test.url.tel 项右键新建字符串值,名称为→URL Protocol,无数据。
  4. tel 项右键新建项,项名为→ shell,内容不用修改。
  5. shell 项右键新建项,项名为→ open,内容不用修改。
  6. open 项右键新建项,项名为→ command,将默认值的数据设为 “E:\test.exe”
    “%1”
    ,第一个引号中为应用的绝对路径。
  7. 结果如下图所示。

二、在HKEY_CLASSES_ROOT\applications项下

1、定义自己应用的项

  1. HKEY_CLASSES_ROOT \ applications项右键新建项,项名为→ test.exe
  2. test.exe 项右键新建字符串值,名称为→ApplicationCompany,数据含义为应用所属公司,自定义。
  3. test.exe 项右键新建字符串值,名称为→FriendlyAppName,数据含义为选择应用时显示的名称,自定义。
  4. test.exe 项右键新建项,项名为→ shell,内容不用修改。
  5. shell 项右键新建项,项名为→ open,内容不用修改。
  6. open 项右键新建项,项名为→ command,将默认值的数据设为 “E:\test.exe”
    “%1”
    ,第一个引号中为应用的绝对路径。
  7. 结果如下图所示。


三、在HKEY_LOCAL_MACHINE\SOFTWARE\Clients\项下

1、定义协议与应用关联的配置信息项

  1. 在**HKEY_LOCAL_MACHINE\SOFTWARE\Clients**项右键新建项,项名为→ Tel
  2. 修改 Tel 项,将默认值的数据设为→Microsoft Outlook,不必须为此数据,可以为空。
  3. Tel 项右键新建字符串值,名称为→PreFirstRun,数据含义为描述没有应用时的提示,可以为空,参考描述为:没有默认的Tel协议客户端,或者当前的Tel客户端无法实现该协议请求。请运行 Microsoft Office Outlook 并将其设为默认Tel协议客户端。*Microsoft Office Outlook。
  4. Tel 项右键新建项,项名为→ shell,内容不用修改。
  5. shell 项右键新建项,项名为→ open,内容不用修改。
  6. open 项右键新建项,项名为→ command,将默认值的数据设为 “E:\test.exe”,引号中为应用的绝对路径,无需像上述后面跟着 “1%”
  7. Tel 项右键新建项,项名为→test,内容不用修改。
  8. test 项右键新建项,项名为→Capabilities,内容不用修改。
  9. Capabilities 项右键新建项,项名为→URLAssociations,内容不用修改。
  10. Capabilities 项右键新建字符串值,名称为→tel,数据为→test.url.tel,数据含义为关联上述第一大点的第二小点。
  11. 结果如下图所示。


四、在HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications项中

1、定义应用路径关联的配置信息

  1. HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications 项右键新建字符串值,名称为→test,数据为→Software\Clients\Tel\test\Capabilities,数据含义为指向上述第三大点协议与应用关联的配置信息项。
  2. 结果如下图所示。

五、打完收功

注册表菜单栏【查看】右【刷新】,电脑进入【按协议指定默认应用】即可找到自己的应用。

六、VS生成应用前预先设置注册表

此为第二种方式,若有源码在手,直接在VS软件项目名,右键【视图】,选择【注册表】,结构如下所示,内容和上述几大点一样添加即可。

注释:VS注册表编写值时,使用 “[TARGETDIR]test.exe” “%1” 即为引用安装路径,等同于上述 “E:\test.exe” “%1”

说明与总结

  • 注册表修改我是个菜鸡
  • 此文全共享,想干什么随意
  • 最后总结以下三点:

Windows应用、注册表相关推荐

  1. windows通过注册表修改3389端口号

    <span style="color:#FF0000;">windows通过注册表修改3389端口号,步骤如下:</span> 1.开始→运行,输入rege ...

  2. 科学的清理 Windows 98 注册表(转)

    科学的清理 Windows 98 注册表(转)[@more@] 删除多余的dll等文件 对共享软件感兴趣的朋友可能都知道著名的dll文件清理工具cleansweep.它的作用,就是将我们长期在系统中添 ...

  3. 计算机文档库怎么进,Windows电脑注册表怎么进?

    原标题:Windows电脑注册表怎么进? 电脑是我们生活中重要的工具,而电脑使用时间久了,确实也容易出现问题.电脑系统出现问题的时候,我们往往会通过系统设置来解决,比如说通过注册表来进行设置.那么,你 ...

  4. windows进注册表快捷键

    windows进注册表快捷键 regedit

  5. 什么是Windows的注册表

    什么是Windows的注册表 注册表是一套控制操作系统外表和如何响应外来事件工作的文件. 这些"事件"的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等. 注 ...

  6. 认识Windows XP注册表

    认识Windows XP注册表 1.概述 Windows XP注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要.具体来讲,此数据库包含了 ...

  7. Windows 10注册表

    Windows 10注册表 一.注册表:记录系统和用户配置信息的文件 早期注册表:95以前版本为早期注册表,以ini 为扩展名的配置文件.(system.ini和win.ini) 注册表:由多个文件组 ...

  8. 【教程】Windows通过注册表方式设置TCP超时时间

    Windows 通过注册表设置 TCP超时时间: 1.打开"开始"菜单,输入"regedit"并打开注册表编辑器 2.在注册表编辑器中,导航到 HKEY LOC ...

  9. windows 7 注册表启动项位置

    windows 系统注册表有多个启动项位置 一般是HKLM / software / microsoft / windows / currentversion / run 还有HKCU / softw ...

  10. Windows - 通过注册表编辑器来删除多余盘符

    Windows+R 打开运行窗口,输入 regedit ,进入注册表编辑器 删除百度云管家盘符 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curren ...

最新文章

  1. linux rpm找不到命令_linux环境下 python环境import找不到自定义的模块
  2. Spring父子容器的关系分析--用实例说话
  3. uefi启动u盘安装系统_技嘉uefi启动怎么安装win8.1系统【安装教程】
  4. 中公教育计算机网络,计算机考试题库:计算机网络模拟练习题(2)
  5. Java8 ArrayBlockingQueue 源码阅读
  6. 48_并发编程-线程-资源共享/锁
  7. 从Spark Streaming到Apache Flink: 实时数据流在爱奇艺的演进 | 技术头条
  8. 由dataview生成对应的datatable的方法
  9. YOLO V1,V2, V3的记录
  10. Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template
  11. excel宏教程_篇四、CFD Coding之后处理(VBA/EXCEL)
  12. 网络空间安全和计算机科学与技术的区别,密码与网络空间安全学科有什么区别...
  13. 计算机毕业设计java+ssm的在线投票管理系统(源码+系统+mysql数据库+Lw文档)
  14. Android studio 导入项目运行
  15. CM android rom,华为5X CM 12.1 Android ROM刷机包下载安装教程
  16. 360安全浏览器支持国密功能
  17. C++ 学生信息管理系统课程设计报告
  18. md4 java_求MD4 java实现的代码
  19. linux文件夹内JPG批量转PNG
  20. Figma#1: 图形绘制

热门文章

  1. MySql优化之路(一)--- 字段的设计和类型选择
  2. 朴素贝叶斯 二项式 伯努利
  3. D1. Chopping Carrots (Easy Version)
  4. 2021年茶艺师(中级)考试报名及茶艺师(中级)模拟考试题
  5. Java项目一 家庭记账软件
  6. python爬虫---某站排名100
  7. 408计算机组成原理知识点常考点总结
  8. Travel SCU - 4444
  9. OmniSLAM:多鱼眼相机的SLAM系统
  10. 无器械健身和器械健身比较 1