ContextMenuManager11¶
一个面向 Windows 11 的本地右键菜单管理工具,把散落在注册表中的 Explorer 菜单项整理成可读、可查看、可开关的桌面界面。
GitHub:BeyondXinXin/ContextMenuManager11
1 项目定位¶
Windows 右键菜单用了很多年之后,很容易逐渐堆积大量第三方项目。
真正想整理时会发现,它们并不集中存在一个地方:
- 有些来自
Shell - 有些来自
ShellEx - 有些属于文件
- 有些属于文件夹
- 有些只出现在目录空白处
- 还有“新建”“发送到”“打开方式”等不同机制
直接使用注册表当然可以管理,但大量 CLSID、资源字符串和不同注册位置并不适合日常操作。
ContextMenuManager11 做的事情,就是把这些 Windows 内部信息重新整理成人能直接看懂的界面。
2 核心功能¶
程序可以分别查看和管理:
- 文件右键菜单
- 文件夹右键菜单
- 目录空白处菜单
- 桌面背景菜单
- 磁盘菜单
- 此电脑
- 回收站
- 库
- “新建”
- “发送到”
- “打开方式”
对于每个菜单项,会尽量解析并展示:
- 实际显示名称
- 图标
- 来源
- 当前启用状态
- 命令
- 程序路径
- CLSID
- 注册表位置
这样不需要直接面对一堆内部标识,就能知道某个菜单项究竟是谁添加的、现在是否生效,以及对应配置在哪里。
另外还支持:
- 只显示当前启用项目
- 启用 / 禁用常见 Shell、ShellEx 项目
- Windows 11 经典完整右键菜单切换
- 一键重启 Explorer
- 查看部分系统动态菜单项
3 为什么没有直接“删除”¶
这个工具更倾向于管理状态,而不是简单删除注册表项。
右键菜单的来源比较复杂,很多第三方软件在升级或重新安装后还会再次写入。相比直接删除,优先做启用 / 禁用更容易恢复,也更适合长期管理。
对于无法安全单独控制的 Explorer 运行时菜单,程序会标记为系统项目,只提供查看。
这也是项目里比较重要的一条原则:
能明确恢复的操作才适合做成一个开关。
4 技术实现¶
项目使用:
- C#
- .NET 10
- Windows Forms
- Windows Registry / Shell 相关能力
程序目标平台为 net10.0-windows,发布为 Windows x64 自包含单文件应用。
工程结构主要分为:
界面层只负责展示和交互,菜单枚举、注册表解析、图标解析和配置修改集中在 Services 中,避免把大量 Windows Shell 细节直接堆进窗体代码。
5 右键菜单为什么比想象中复杂¶
这个项目真正有意思的地方,并不是“改几个注册表值”,而是如何把 Windows Explorer 的不同菜单来源统一成同一种可读模型。
同一个右键菜单界面背后可能来自完全不同的机制。
有些项目有明确名称,有些只保存资源编号;有些可以直接找到 EXE,有些通过 CLSID 间接定位;还有一些项目根本不是静态注册表菜单,而是 Explorer 运行时生成。
因此程序需要做的并不只是:
而更接近:
这部分也是整个项目最主要的工程工作。
6 Windows 11 适配¶
Windows 11 引入了新的简化右键菜单,但很多开发工具和传统 Shell 扩展仍然位于“显示更多选项”中。
ContextMenuManager11 同时提供经典完整右键菜单切换,方便需要频繁使用传统菜单的开发环境。
修改系统级菜单配置需要管理员权限,因此程序在 Manifest 中声明了相应权限。
7 发布方式¶
项目配置为:
- Windows x64
- Self-contained
- Single-file
- 不依赖目标电脑预装 .NET Runtime
因此下载 Release 后可以直接运行。
源码与 Release:
https://github.com/BeyondXinXin/ContextMenuManager11
8 项目总结¶
ContextMenuManager11 属于我比较喜欢的一类小工具:问题不大,但系统本身没有提供足够顺手的入口。
它不试图替代 Explorer,也不安装额外 Shell Extension,只把 Windows 已有的配置重新整理成一个更容易理解和控制的界面。
对于这种工具,我更在意的是简单、透明和可恢复,而不是堆很多功能。
