在今天准备写第一篇个人博客的时候,突然觉得每次右键新建.txt再更改为.md有些繁琐,便有了右键直接创建.md文档的需求,在一番研究之下,最终成功实现了目标
网上的方法
在Bing搜索与GPT询问的方法如出一辙:
- 按下
Win + R打开运行命令,输入regedit后按回车打开注册表编辑器。 - 在注册表编辑器中,找到
HKEY_CLASSES_ROOT键。这个键下的子项代表系统中所有的文件类型。 - 选择或创建一个代表你想要新建的文件类型的键。例如,如果你想在右键菜单中添加创建
.txt文件的选项,你应该找到或创建一个名为.txt的键。 - 选中你的文件类型键,然后右键选择 新建 -> 项,并命名为
ShellNew。如果不包含这个子键,右键菜单上就不会有新建此类型文件的选项。 - 在
ShellNew键下,选择 新建 -> 字符串值,并命名为NullFile。此值通知 Windows 在用户选择新建此类型文件时,应生成一个空的文件。 - 重启
explorer之后应该可以看到新建菜单中出现了想要的文件格式
排查问题
在实操过程中,重启explorer并没有出现.md文件格式,开始了排查问题之路
修改文件Classes
在评论区看到可以在计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew文件夹中双击编辑Classes文件,添加.md后缀

这些类型与新建菜单里的类型一一对应,导致我认为该值是新建菜单的配置,于是向着修改这个值的方向前进
问题
修改classes值并重启explorer之后,新建菜单中并没有出现.md,我返回查看classes值,发现无法编辑该值,Bing搜索之后得知是权限问题,但修改之后仍无法重新编辑

最后发现点击任意项再点击ShellNew项,classes值仍然可以编辑,并且修改的权限也会回退,因此可以确信并非用户权限问题,再次编辑发现classes值并没有修改成功,依旧为修改前的值。
原因
这不禁让我想起以前遇到的某个文件无法写入的问题,最后弄明白原来那个文件是自动更新,因此每次写入都无法覆盖
于是我尝试着将.bat添加到新建菜单:

成功!
并且classes值也有了.bat

猜测classes值是由系统自动更新,用于展示映射关系而不是配置
自此便知道了修改classes值的方法是错误的
解决办法
在网上继续寻找之后发现运行这段注册表编辑文件即可解决
[HKEY_CLASSES_ROOT\.md]
@="Typora.md"
"PerceivedType"="text"
[HKEY_CLASSES_ROOT\.md\ShellNew]
"NullFile"=""
"FileName"=""
观察之后发现其主要区别在于.md的默认值设置为Typora.md,设置为Markdown或Markdown.md均无效
而将默认值设置为.md会导致右键新建时无限重启explorer