Windows 多级右键菜单基础
修改的键与项
Win10鼠标右键菜单管理分为三种情形:右键文件夹、文件以及右键空白区域
- 右键空白区域(分为桌面空白区域和其他文件夹下空白区域)
- 右键文件夹
- 右键文件(分为所有文件和某类型文件两种)

绝大部分情况只需要关系HKEY_CLASSES_ROOT
即可
项:
SubCommands
:如果某键需要设置为拥有子菜单,那么需要SubCommands
,如样例图2
MUIVerb
:显示的字符串
键:
shell
:自定义的键需要在shell
键下
command
:绑定exe,并对其传参
关于传参
1
2
3
4
5
6
7
8
|
%0 //选中的单个文件的路径
%1 //选中的单个文件的路径
%2 //选中的单个文件的所在文件夹路径
%* //选中的所有文件的所有文件路径,空格分隔
%V //选中的若为快捷方式,则为目标路径,否则同%1
%n //选中的文件名(无扩展名)
%x //选中的文件扩展名
%W //工作目录
|
%0
和%1
在对多个文件夹和单个文件夹选中右键时,表现均一致
笔者环境为Win11
在command
设置为cmd.exe /c 1.bat %0
时,
有趣的是,选中多个文件夹右键点击时,传参是分别传递的,例如选中了文件夹a,b两个,会调用两次command里的内容,即执行两次command,分别为
cmd.exe /c 1.bat a
cmd.exe /c 1.bat b
%*
也是一样
示例
样例:





效果:

点击后会调用指定的vbs文件,传参是 deletexxxx
和 %0
vbs脚本内容如下
1
2
3
4
5
6
7
8
9
10
11
|
strpass = ""
For each i in WScript.Arguments
strpass = strpass & " " & i
Next
' msgbox strpass
Set WshShell = CreateObject("WScript.Shell")
strPythonScript = "D:\Users\lidm11\Code\rightMenu\fenfa.py"
strCommand = "python.exe " & strPythonScript & " " & strpass
' msgbox strCommand
WshShell.Run strCommand, 0, true
|
第一段拼接获得的参数,第二段传递给python脚本静默执行
脚本内容就根据传参灵活自定义了
存档,脱敏的导出文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool]
"MUIVerb"="tools"
"SubCommands"=""
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell]
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyDir]
"MUIVerb"="递归清除空子文件夹"
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyDir\command]
@="wscript.exe D:\\fenfa.vbs deleteEmptyDir %0"
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyFile]
"MUIVerb"="递归清除空文件"
[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyFile\command]
@="wscript.exe D:\\fenfa.vbs deleteEmptyFile %0"
|