关于Windows 注册表相关的发现(C#)
2021-04-26 09:27
标签:功能 gedit 个人 引入 windows 结果 资料 相关 c# 0x00 前言 注意:这篇文章发出来只是记录我对注册表的一些了解,里面包含了错误的理解,不准确的理解,以及有偏差的理解。如果有哪位朋友曾经玩过WIN32的注册表,欢迎指点。这年头关于注册表的资料实在是太少了。兴许是我智商有限搜不到! 本文指引: 本文不涉及到具体实现,理论而言所有人都适合阅读。但要求读者至少知道什么是注册表,regedit怎么打开。什么是注册表项。。。。。 0x01 入门 这里我只研究右键菜单相关的功能。 在注册表中,HKEY_CLASSES_ROOT下记录着根系统文件后缀名与处理程序之间的映射,也就是文件关联。最直接的例子就是你的MP3文件由酷狗音乐还是网易云音乐打开。如果我们需要为我们的程序添加文件关联,我们就需要对这个注册表项进行操作、修改。 当然这个注册表项里面不只能处理文件关联,还有其他的高级操作:比如文件资源管理器的右键菜单项。 这里我先简单介绍一下,HKEY_CLASSES_ROOT这个目录下有一个绝对会存在的子注册表项:\HKEY_CLASSES_ROOT\* 。 这个注册表项主要用于处理全局后缀名,多说无益,我们就直接来点实战。这是我电脑上全局后缀名的注册表项,注意shell注册表子项可以提供最简单的右键操作,也就是没有下一级菜单的一般都在shell下面:
看到我选择了VSCode了吗?我选择了BCD文件,因为这个文件没有注册文件关联,所以由全局后缀里面的shell注册表项决定右键菜单如何显示。这里我们可以看到Open With Code这个菜单项。 这时候我们删除注册表项,看看结果: 这时候那个右键菜单已经不见了。这一个例子也算是一个引入吧,个人觉得这个例子还是有点用处的。 0x02 更多的内容 在这里我不讲任何编程实践,想知道如何操作注册表的看这里: (C#)https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/file-system/how-to-create-a-key-in-the-registry 这里只讨论文件后缀名以及URL Protocol相关的东西,注意是讨论,不代表我知道的多,如果有更独到的简介请在评论区骚扰我。 (2017/11/24 今天先到这里,此文章长期不定时更新,明天再写点) 备注一下一些内容: OpenWithProgIds:即打开方式菜单显示的内容,这也是打开方式的列表项,有待考究,毕竟WIN32的东西太过遥远。。。。微软的文档旧的不知道跑哪去了,新的有暂时找不到,在网上能搜到的都是零碎的东西,凑不成完整的知识点。。。 PersistentHandler:永久句柄,是Windows Search 搜索特性。。。没翻译完全,有兴趣可以自己看一下(地址:http://www.tomshardware.com/forum/20602-63-persistenthandler) 0x03 有用的一些博客 http://www.cnblogs.com/cssmystyle/archive/2011/05/04/2036250.html 关于Windows 注册表相关的发现(C#) 标签:功能 gedit 个人 引入 windows 结果 资料 相关 c# 原文地址:http://www.cnblogs.com/Danfish/p/7892441.html