Windows10自定义右键菜单
邓杰·罗斯
2024年09月01日 23:27
收录于文集
共4篇

  因为经常用到两个bat文件,每次都要把文件夹拖放到bat上运行,感觉太麻烦了,所以本着不折腾不舒服的精神开始研究怎么在右键菜单添加自己想要的功能。

  网上看了很多的教程,不知道是我系统的问题还是什么,反正就没成功过。最终经过一番折腾和尝试,终于摸索出了一点点办法,特此分享给大家。

我测试的系统是:Windows 10 专业工作站版 22H2;

下文中所有的Windows系统均是代指这个版本。

方法开始:

Windows的右键菜单主要是通过【注册表(regedit)】控制,所以首先要打开【注册表编辑器】。

代码块
Shell
自动换行
复制代码
在键盘上按【Win+R】打开【运行】窗口

在【打开(O):】的输入框中输入:【regedit】

点击【确定】或【按回车键】打开【注册表编辑器】
复制成功

从【运行】启动注册表编辑器

在注册表中有4个路径负责控制右键菜单,4个路径分别对应4个场景:

代码块
JavaScript
自动换行
复制代码
// 右键单击桌面背景:
HKEY_CLASSES_ROOT\DesktopBackground\Shell

// 右键单击文件:
HKEY_CLASSES_ROOT\*\shell

// 右键单击文件夹:
HKEY_CLASSES_ROOT\Directory\shell

// 右键单击文件夹背景:(在文件资源管理器中右键单击文件夹背景空白区域)
HKEY_CLASSES_ROOT\Directory\Background\shell
复制成功

我目前只是在文件夹上添加了右键菜单,所以现阶段的教程也只演示如何在文件夹上添加右键菜单。

代码块
JavaScript
自动换行
复制代码
在【注册表编辑器】中打开【文件夹右键菜单】路径:
复制【HKEY_CLASSES_ROOT\Directory\shell】到【注册表编辑器】的【地址栏】
按【回车键】前往对应的路径
复制成功

在地址栏输入想去的路径

在这个【shell】目录下就可以开始创建我们自己的右键菜单了!

代码块
Shell
自动换行
复制代码
首先创建一个【项】(类似一个文件夹)
	右键单击【shell】目录,在弹出的菜单中选择【新建(N)】,然后在子菜单中选择【项(K)】
	给这个项设置一个名称(没发现中文和英文有什么影响,很多教程都是要英文名称,可能是低版本Windows会有影响吧...)
复制成功

创建一个【项】,并为其命名

恭喜你,你的【文件夹右键菜单】已经多出了一个新的选项!

(很多教程说要重新启动资源管理器,但是我在测试的时候发现不需要,可能是系统版本不同。我这边所有的创建和修改都是实时生效的。)

右键单击文件夹的效果

现在我们可以给这个菜单设置名称、图标、执行的命令了。

让我们回到【注册表编辑器】中,【注册表编辑器】左侧的窗口是【目录树】,右侧的窗口则会显示当前项的所有内容(或者说属性清单),要注意这【只是当前项,不包含下级子项】

项的属性清单

其实修改【默认】的值也能修改菜单的名称,但是这样就不能创建下级子菜单了,这是个巨坑。

我们现在给这个菜单设置【名称】、【图标】

代码块
Shell
自动换行
复制代码
设置【名称】 注意大小写!
	右键单击【注册表编辑器】的【右侧窗口】
	选择【新建(N)】👉【字符串值(S)】
	设置属性名称为【MUIVerb】
	双击【MUIVerb】属性,在弹出的窗口中设置【数值数据(V)】的值,这个值就是菜单展示的名称。
复制成功

设置名称属性

代码块
Shell
自动换行
复制代码
添加【图标】
	右键单击【注册表编辑器】的【右侧窗口】
	选择【新建(N)】👉【字符串值(S)】
	设置属性名称为【icon】
	双击【icon】属性,在弹出的窗口中设置【数值数据(V)】的值,这个值就是icon的路径。
	如果没有合适的icon图标,可以使用系统中的。
	例如我用的是【%SystemRoot%\System32\SHELL32.dll】中的第【46】个,
	这里用英文逗号【,】分隔,写作【%SystemRoot%\System32\SHELL32.dll,46】。
复制成功

设置图标属性

代码块
Shell
自动换行
复制代码
添加【命令】
	右键单击【注册表编辑器】的【左侧窗口】(左侧)(左侧)(左)(左)(左),
	选择【新建(N)】👉【项(K)】,
	设置【项】名称为【command】(必须是这个单词,但是不区分大小写),
	点击【command】【项】,在【注册表编辑器】的【右侧窗口】中双击【默认】,
	设置【默认】的【数值数据(V)】,这个值就是实际执行的命令,例如我设置为【cmd】,
	右键单击文件夹,然后点击这个菜单就会直接启动cmd窗口。
复制成功

给按钮设置命令

实际上到这一步就完成了一个右键菜单的创建。

接下来的部分是如何创建菜单的【下级子菜单】,相对上面会加快一些节奏(绝对不是太困了想赶紧结束)。

代码块
Shell
自动换行
复制代码
创建【下级子菜单】:
	在【主菜单】的属性中添加一个名为【SubCommands】的【字符串值(S)】;
复制成功

这时可以看到右键菜单已经多了一个三角符号,但是实际上只是个摆设,因为我们还没有设置具体的子菜单。

代码块
Shell
自动换行
复制代码
创建【下级子菜单】:
	在【我的菜单】的项的下级创建一个名为【shell】的项,其他的项都删掉,只保留这一个。
	
	(🔺划重点🔺)
	使用我们刚才创建单个菜单的方法,在【shell】项的下面创建新的项,给每一个项【设置名称】、【设置图标】(可有可无)、【设置执行的命令】
复制成功

结构和菜单展示

为了演示,没有给命令1设置图标

命令1没有设置icon图标

每个子命令下设置【command】项,【command】项的默认值就是要执行的命令。

如果要添加多级菜单,也可以继续往下套,我没有测试过能套多少层。

有啥问题大家多多留言,一起学习一起成长。