Windows下的右键菜单管理

Posted by HYJ on December 7, 2017

在Windows中安装很多软件时,鼠标的右键菜单中会被各种软件塞满很多没用的选项。本文主要讲述了在安装了Visual Studio 2017、MPC-HC、WSL等软件后的右键菜单管理。

⚠️注:操作前请自行备份注册表

探析注册表📝

不幸的是,Windwos下的右键菜单由注册表中的多个目录管理。一般而言,这三个目录是

HKEY_CLASSES_ROOT\*\shell HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers HKEY_CLASSES_ROOT\AllFileSystemObjects\ShellEx

文件夹上按住鼠标右键 所显示的菜单由注册表中的以下两个目录管理

HKEY_CLASSES_ROOT\Directory\shell HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers

文件夹空白处按住鼠标右键 所显示的菜单由注册表中的以下目录管理

HKEY_CLASSES_ROOT\Directory\Background\shell

如何打开注册表📝(Regedit)

  1. 在Windows 10: 打开开始菜单,直接输入regedit,回车
  2. 在Windows 7: 按住WIN+R,输入regedit,回车

移除’Shell’目录中的项

这里以移除VLC的右键菜单为例,当鼠标在一个文件夹上右键时,会出现”Add to VLC media player’s Playlist”和”Play with VLC media player”, 以下是一种隐藏的办法。这种方法同样适用于移除 Git Bash HereGit GUI

将选项隐藏(移除VLC的右键菜单为例)

🎉 该方法也适用于 HKEY_CLASSES_ROOT\Directory\Background\shell (文件夹空白处按住鼠标右键)

在以下两个注册表目录下 新建一个名为LegacyDisable的 字符串 值

HKEY_CLASSES_ROOT\Directory\shell\AddtoPlaylistVLC HKEY_CLASSES_ROOT\Directory\shell\PlayWithVLC

Remove_Shell_VLC Remove_Shell_VLC

Remove_Shell_VLC

将选择项移动到Extended Context Menu(Shift+鼠标右键所显示的菜单)

在上文提到的两个注册表目录下 新建一个名为Extended的字符串值

⚠️注:当ExtendedLegacyDisable这两个字符串值同时存在于一个目录中时,LegacyDisable会覆盖掉Extended,也就是普通菜单和Shift扩展菜单都不显示这个选项。

移除Shellex 目录中的项(以”Move to Dropbox”为例)

在Shellx目录下的菜单只能删除或禁用它,而不能像shell一样只将其移动到Extended Context Menu.因此,在shell目录下使用添加LegacyDisableExtended字符串来临时隐藏它的技巧是不被允许的。 Shellx目录下的项名有时很难判断它是指向哪个软件,这里以Dropbox安装后留下的”Move to Dropbox”为例 在DropboxExt目录下将字符串值为(Default)的数值数据前加一些 英文破折号- 这样可以既不破坏原有数据,又能在想要在菜单中重新显示它时快速恢复。

Remove_Shellx_Dropbox Remove_Shellx_Dropbox

Remove_Shellx_Dropbox

通过文件类型探索其他目录

部分软件只有在右键单击特定的文件才会显示出。删除的方法和上文提到的shell能使用的两种技巧一致,在此不做赘述。

修改顺序

Windows默认安装名称来对菜单上下位置排序。在不使用第三方应用的情况下,只能通过修改注册表项目名称来修改项目在上下文菜单中的位置。

  • https://superuser.com/questions/17543/rearrange-reduce-windows-context-menu
  • https://superuser.com/questions/891826/how-to-change-the-order-of-send-to-menu-items-on-windows-7
  • https://www.lopesoft.com/index.php/en/

将WSL添加到右键菜单

WSL是Windows10的一个子系统,提供了一个Linux的虚拟环境,通过将WSL添加到鼠标右键菜单可以实现类似于Linux桌面环境下的’Open Terminal Here’功能。将WSL添加到右键菜单后,在目录空白处 (此教程不适用于文件夹上右键菜单打开) 可直接打开Bash定位到当前目录。

注:本文基于在Windows Store中安装的Ubuntu,详细安装指南请参考MSDN的内容

  1. 下载bash.reg,双击运行。
  2. bash.ico下载到任意目录下。
  3. 进入注册表编辑器(Win+R➡输入Regedit),定位到HKEY_CLASSES_ROOT\Directory\Background\shell\WSL,修改Icon下的数据为bash.ico存放的位置即可。
WSL WSL

WSL

# 2019.7 更新

大概在Windows10 1809/1903 以后的版本中,系统自动加入了 “Open Linux shell here”/”在此处打开 Linux Shell”的右键菜单,但不带有图标

HKEY_CLASSES_ROOT\Directory\Background\shell\WSL
HKEY_CLASSES_ROOT\Directory\shell\WSL
HKEY_CLASSES_ROOT\Drive\shell\WSL

这里是用于恢复原系统WSL右键菜单的文件 WSL_1903

可以按此教程删除它并换用上面的:https://www.tenforums.com/tutorials/110473-add-remove-open-linux-shell-here-context-menu-windows-10-a.html

管理“在Visual Studio中打开”

临时隐藏“在Visual Studio中打开”(推荐)

  1. 目录背景下右键菜单设置
    方法:在上文的\HKEY_CLASSES_ROOT\Directory\Background\shell\AnyCode (而不是command)目录下点击鼠标右键➡新建➡DWORD (32位)值,将其重命名为HideBasedOnVelocityId,并双击将数值数据设置为006698a6(十六进制)
  2. 目录图标上右键菜单设置
    HKEY_CLASSES_ROOT\Directory\shell\AnyCode (而不是command)目录下点击鼠标右键➡新建➡DWORD (32位)值,将其重命名为HideBasedOnVelocityId,并双击将数值数据设置为006698a6(十六进制)
直接移除“在Visual Studio中打开”

删除以下两项注册表即可

HKEY_CLASSES_ROOT\Directory\Background\shell\AnyCode HKEY_CLASSES_ROOT\Directory\shell\AnyCode

将“在Visual Studio中打开”移动到Extended Context Menu

Extended Context Menu就是在按住Shift+鼠标右键时显示的目录,这种方法适合不常用但仍旧要用到此功能的人,在按住Shift+鼠标右键时能显示出此功能。

方法:在上文的两个 ../Anycode (而不是command)目录下点击鼠标右键➡新建➡字符串值➡输入Extended 具体步骤如下图所示

Change_Extended_Visual Studio Change_Extended_Visual Studio

Change_Extended_Visual Studio

管理右键“CMD”

永久隐藏鼠标右键下的“CMD”

HKEY_CLASSES_ROOT\Directory\shell\cmd 下将 ShowBasedOnVelocityId 修改为 HideBasedOnVelocityId,这样将会在文件夹上按住鼠标右键时不会显示CMD。

HKEY_CLASSES_ROOT\Directory\Background\shell\cmd 下将 ShowBasedOnVelocityId 修改为 HideBasedOnVelocityId ,这样在文件夹空白处按住鼠标右键时不会显示CMD。

一般数值数据设置为 0x00639bc8 (十六进制),非必要时不需要改动数值数据,只需重命名字符串即可。

关于Windows Media Player

Add to MPC-HC Playlist&Play with MPC-HC Add to MPC-HC Playlist&Play with MPC-HC

Add to MPC-HC Playlist&Play with MPC-HC

移除“添加到 Windows Media Player 列表”

移除“使用 Windows Media Player 播放”

参考:

  1. https://www.tenforums.com/tutorials/83163-remove-add-windows-media-player-list-context-menu-windows-10-a.html
  2. https://www.tenforums.com/tutorials/83169-remove-play-windows-media-player-context-menu-windows-10-a.html

移除“移动到Onedrive”

该行为在右键点击文件时会出现,同时出现在 Extended Context Menu

Move-To-Onedrive-Menu

方法:直接删除 [HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers\ FileSyncEx] 字段

Move-To-Onedrive-Register

参考资料:https://www.majorgeeks.com/files/details/add_or_remove_move_to_onedrive_context_menu_in_windows_10.html

移除“Add to MPC-HC Playlist”和“Play with MPC-HC”

MPC-HC 是一款视频播放软件

若在安装时勾选了最后一个选项,则会在右键目录菜单中出现“Add to MPC-HC Playlist”

MPC-HC Installation Change_Extended_MPCHC

MPC-HC Installation

打开MPC-HC–>查看–>选项–>以管理员身份运行–>资源管理器关联菜单–>取消勾选目录

Change_Extended_MPCHC Change_Extended_MPCHC

Change_Extended_MPCHC

关于Powershell

删除/隐藏原版Powershell

若要彻底删除:请参考 WSL部分

若想暂时隐藏:先获取目录权限,将以下路径的改成 ShowBasedOnVelocityId 改成 HideBasedOnVelocityId

HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell
HKEY_CLASSES_ROOT\Directory\shell\Powershell

删除Extended Context Menu下的Powershell

只要将以下两个目录下的ShowBasedOnVelocityId修改成HideBasedOnVelocityId,操作前须获取当前用户的目录权限。

HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell HKEY_CLASSES_ROOT\Directory\shell\Powershell

Hide_Poweshell Hide_Poweshell

Hide_Poweshell

增强版的CMD,Powershell和Git右键菜单

以CMD(Command Prompt)为例,具体的注册表相关目录结构如下

  • HKEY_CLASSES_ROOT\Directory\shell\01MenuCmd –> Directory\ContextMenus\MenuCmd
  • HKEY_CLASSES_ROOT\Directory\background\shell\01MenuCmd –> Directory\ContextMenus\MenuCmd
  • HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuCmd
    • open –> Command Prompt
    • runas –> Command Prompt Elevated

由于该操作过于复杂,下面直接给出该实现的Reg文件

  • 若同时想在普通右键菜单和扩展右键菜单(Extended Context Menu)下使用
    • 使用 Command Prompt.reg 以在右键菜单中 添加 增强版Command Prompt
    • 使用 Powershell.reg 以在右键菜单中 添加 增强版Command Prompt
    • 使用 Git.reg 以在右键菜单中 添加 增强版Git
  • 若只想在扩展右键菜单(Extended Context Menu)下使用

删除“使用Windows Defender扫描”

目录图标上右键会出现该菜单

打开注册表,定位到 HKEY_CLASSES_ROOT\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780},删除 {09A47860-11B0-4DA5-AFA5-26D86198A780}

下面提供便捷的删除/恢复文件

删除“共享”

Sharing Sharing

Sharing

打开注册表,定位到HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers, 在ModernSharing的数据前加上一些英文破折号----

Disable_Sharing Disable_Sharing

Disable_Sharing

删除“🐧通过QQ发送到”

由于目前最新版本的QQ仍旧支持在设置中关闭这个功能,所以更推荐于在设置中关闭而不是修改注册表。

Remove_QQ Remove_QQ

Remove_QQ

参考资料

  • 探析注册表
    • https://www.howtogeek.com/howto/windows-vista/how-to-clean-up-your-messy-windows-context-menu/
  • WSL相关
    • https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
    • https://github.com/Microsoft/WSL/issues/603
    • https://github.com/Manouchehri/bash-WSL-context-menu
  • Visual Studio相关
    • https://developercommunity.visualstudio.com/content/problem/26397/disable-context-menu-for-open-in-visual-studio.html
  • Github中的注册表大全
    • https://github.com/AmrEldib/WindowsContextMenuCustomizations
  • MPC-HC相关
    • http://codecs.forumotion.net/t1921-disable-folder-context-menu
    • https://www.youtube.com/watch?v=Djxk1GcXqQI
  • 增强版的CMD和Powershell右键菜单
    • https://blogs.msdn.microsoft.com/andrew_richards/2017/03/01/enhancing-the-open-command-prompt-here-shift-right-click-context-menu-experience/
  • 删除“使用Windows Defender扫描”
    • https://www.askvg.com/tip-remove-scan-with-windows-defender-option-from-context-menu-in-windows-10/
  • 删除“共享”
    • http://www.thewindowsclub.com/remove-share-button-context-menu-windows-10
  • Windows注册表脚本文件的编写
    • http://blog.csdn.net/shuilan0066/article/details/5983129