我研究这个是因为发现右键菜单在安装了一下软件后,越来越臃肿,有用的没用的菜单项都被塞进去了,于是自己动手给菜单瘦个身。
这里首先警告一句:下面操作全部涉及到修改注册表,看见不认识,不确定的注册表项,别手欠看见空项或者自以为无用的注册表项,就瞎乱删。最好是有一定操作注册表的基础在跟着本文操作,至少要知道怎么备份和恢复注册表。手欠的孩子都请自己准备好恢复或重装系统,本文的经过作者本人亲自实践无误,但不保证文中描述完全正确或适用于所有版本的win10操作系统。如果在按照本文说明操作时,发生了系统崩溃,死机,或其他任何可修复/不可修复的系统问题,你可以顺着网线来打我啊,然而我也救不了你。
首先,所有的右键菜单项,几乎都可以在注册表中设置。按 Win + R 打开“运行…”窗口,输入 regedit ,按回车键打开。注意:注册表编辑器是需要管理员权限的。
打开注册表,根项展开有5个子项,如上图所示。右键菜单的项目都包含在第一子项 HKEY_CALSS_ROOT 中。展开该项,第一个子项一般是 * ,这个统配符表示一切后缀的文件都通用。也就是说,这个子项中的一切右键菜单项,没有特别说明,会出现每一个文件的右键菜单中。
展开这一子项,在其内部,所有的右键菜单分为两部分存储(我也懒得去搞清楚这两块区域有什么不同),见下图:
用红线圈起来的两个注册表键,就是放置了右键菜单的地方,看看有哪些是自己安装的软件带来的,看名字挑着没用的就能删除了。这里特表提醒一句,看见键名称是一串***的,请仔细核对后,确认不是系统项再删除。用这种长传数字当名字的键,如果里面空空如也,那很有可能是系统项。
然后是文件夹,文件夹分为两类菜单,一类是鼠标指向一个文件夹图标时,点击右键出来的菜单;第二类菜单是鼠标在已经打开的文件夹窗口的空白处,点击右键弹出的菜单。如下图所示,第一类菜单的注册表项直接在 Directory 下,shell和shellex\ContextMenuHandlers 里面;第二类菜单则在子项 Background 里面。
哦,对了,还有比较特殊的桌面菜单。在桌面空白处点击右键,弹出的菜单在 DesktopBackground 项里面:
是的,细心的人应该已经发现了,这里的菜单项不全。是的,不全,然而我也不知道其他的在哪里,懒得找……
然后还有一些,比如:
驱动器(就是C盘、光驱,之类那些,带着卷标的),在 Drive 项里面;
文件夹还有一些在 Folder 项里面;
字体文件的在 fontfile 项里面;
等等…… 英文好的同学可以自行发挥了。
分割线
上面讲的是如何找到一些项,然后就能删除里面多余的菜单项。下面讲一些添加项的方法:
以python文件为例(*.py),python如见有两个大分支:2.x系列和3.x系列。那么有时候我们的机器上会同时安装这两个python的运行环境,这时候想要快速的用python解释器打开某个 *.py 文件,要么就是命令行,要么就是频繁更改打开方式,要么就是来回挪动环境变量的前后顺序……好吧,我不废话了,下面开始动手添加右键菜单。
首先,还是找到包含python脚本文件的右键菜单项的注册表键,完整的路径是 Computer\HKEY_CLASSES_ROOT\pysFile ,如下图。这里可以看到,有3个子项。一眼可以看到右键菜单的藏身之处:
一般安装python时,附带的菜单项倒在 Shell 子键里面,展开,把一串什么 runwithidle 之类的统统干掉,然后我们来加入自己的项。
右键点击 Shell ,然后选择 新建 ,然后选择 键:
简单点的话,不做附加设置,这个键的名字就会是右键菜单项的显示名字,如下图所示:
之后,如果更改这个键的默认值,就会更改菜单的显示名字:
只有一个键,是不能让这个菜单项真正生效的,这时如果点击这个菜单项,就会收到系统发出的错误警告。下面来添加点击这个菜单项所触发的命令:
在新建的键里面(图里面的 MieHaHa键),再新建一个键,命名为 command,一般大小写都行,但是我还是建议全小写吧。然后更改这个键的默认值,双击(Default)(中文操作系统这里应该是默认),会弹出修改框,把值修改为你的python.exe所在完整路径+参数就可以了,比如我的python36安装在 D:\Environment\Python36\python.exe, 那么我这里就要输入 “D:\Environment\Python36\python.exe” “%1” %*。这里简单解释一下,这里的值,就相当与是命令行里敲的命令。因为是点击文件弹出的菜单, %1 就是被点击的py文件的完整路径。
有了这个菜单项,就能使用这一项直接用python运行脚本文件了。然而,这也太简陋了,看好多程序都用dll文件,把自己的菜单项折叠成了一个子菜单组,简洁又方便。在WIN10里,其实不用dll,只用注册表,也能自己制作一个折叠的子菜单组,比如上图(图8)的 Run With 项就是我自己写的一个菜单组。下图直接上键的树:
除了最内层两个 command 和 最外层的 runwith 其余的键都没有值。 runwith 里需要新建两个 字符串的值:一个命名为 MUIVerb,值为 &Run With,也就是这个菜单组的名称,注意要以 & 开头,这个字符不会被显示;第二个值,命名为Subcommands,没有值。如下图:
原文链接:https://blog.csdn.net/CrowNAir/article/details/78128566