Context Menu Manager Plus特殊菜单管理详解:新建、发送到、Win+X与打开方式完整指南
【免费下载链接】ContextMenuMgrContext Menu Manager Plus 是一个强大的实用程序,它可帮助您管理 Windows 上的右键菜单,并避免第三方向你的右键菜单里塞屎项目地址: https://gitcode.com/PLFJY/ContextMenuMgr
Context Menu Manager Plus(ContextMenuMgr)是一款强大的 Windows 右键菜单管理工具,除了管理传统右键菜单,它还提供专门的特殊菜单管理模块:一键管理“新建”(ShellNew)、“发送到”(SendTo)、“Win+X”快捷菜单和“打开方式”(OpenWith)四大高频菜单场景,帮你彻底告别第三方软件乱塞菜单项的烦恼。
一、为什么“特殊菜单”需要单独管理? 🤔
Windows 的右键世界不只是shell\verb 那么简单。有些菜单面不走传统的注册表模型,用普通开关逻辑处理不了:
| 特殊菜单 | 数据来源 | 为什么特殊 |
|---|---|---|
| 新建(ShellNew) | Software\Classes\<.ext>\ShellNew+ Explorer 排序键 | 还受排序值影响 |
| 发送到(SendTo) | 用户目录%APPDATA%\Microsoft\Windows\SendTo | 是文件目录,不是注册表 |
| Win+X | %LOCALAPPDATA%\Microsoft\Windows\WinX | 包含分组、.lnk文件和 hash |
| 打开方式(OpenWith) | Applications\<app>\shell\<verb>\command+ 策略值 | 不是普通文件类型 verb |
完整的技术原理可以阅读官方文档 docs/special-menus.md,菜单类型的枚举定义在 ContextMenuMgr.Contracts/SpecialMenuContracts.cs。
二、新建(ShellNew)菜单管理:排序与锁定一步到位 ✨
右键空白处看到的“文本文档”“PNG 图片”等新建项,就是 ShellNew 项。ContextMenu Manager Plus 对它的管理能力非常完整:
- 创建 / 编辑 / 删除:填写扩展名、显示名、图标、命令或数据文本即可新增新建项;
- 排序:配合“锁定新建菜单并启用排序功能”开关,可对现有新建项上下移动排序,同时阻止第三方程序偷偷注入新的新建项(例如 WPS 注入的
.pdfwpsshellnew); - 只读保护:由已安装应用包(AppX/MSIX)声明的新建项会显示“应用提供 · 只读”,因为 Windows 没有提供可安全修改的公开开关,工具不会强行修改它。
💡 关闭排序锁后会恢复初始排序;锁的底层实现是对 Explorer ShellNew order key 做精确的 ACL 保护,而非粗暴的全局写保护。
后端核心逻辑位于 ContextMenuMgr.Backend/Services/SpecialMenuService.cs。
三、发送到(SendTo)管理:目录式菜单的安全增删 📂
“发送到”菜单本质上是当前用户 RoamingAppData 下的一个目录,工具通过 ContextMenuMgr.Backend/Services/BackendUserContext.cs 精准定位到%APPDATA%\Microsoft\Windows\SendTo,并支持:
- 新增快捷方式:指定显示名、目标路径、参数和工作目录;
- 软删除与恢复:删除走
.deleted机制,误删可一键恢复,而不是直接物理删除; - 编辑
.lnk:可更新目标、参数、图标、是否以管理员运行; - 动态目标识别:插入 U 盘等可移动磁盘时,Explorer 动态生成的“发送到磁盘”项会被标记为系统生成项,禁止误操作。
四、Win+X 菜单管理:分组、排序与 hash 全自动 🖱️
Win+X 是 Windows 最容易被“魔改”的菜单之一。管理要点包括:
- 分组管理:以 group 目录组织菜单项,支持创建自定义分组;
- 快捷方式创建:通过原生
IShellLinkW接口写入目标、参数、工作目录和图标,并由 ContextMenuMgr.Backend/Services/WinXHasher.cs 自动计算 Explorer 认可的 WinX hash——手动加.lnk却不写 hash,Windows 是不认的; - 排序:上移/下移只重命名
.lnk前缀和本地化名称,不破坏 hash; - 恢复默认:禁止整目录恢复,只允许按分组恢复(恢复前自动备份现有分组)。
⚠️兼容性提示:新版 Windows 可能会拒绝显示新添加的自定义 Win+X 项。如果项目在本工具中可见但重启资源管理器后仍不出现,属于 Windows 系统限制,并非工具故障。
五、打开方式(OpenWith)管理:清理应用注册表 🧹
“打开方式”子菜单里那些应用是从哪来的?它们注册在用户/机器的Classes\Applications下。ContextMenu Manager Plus 帮你:
- 枚举已注册应用:自动解析
FriendlyAppName或目标文件的描述作为显示名; - 启用 / 禁用:通过写入或删除
NoOpenWith值实现; - 新增 / 编辑:为指定 exe 注册到“打开方式”并自定义显示名;
- 商店入口开关:同步 HKLM 与当前用户的
NoUseStoreOpenWith策略值。
所有用户级写入都会精确定位到HKEY_USERS\<SID>,避免服务账户上下文写错位置的经典坑。
六、在界面与源码中的位置 📍
这四个特殊菜单页面在左侧导航栏的“目录”分组下,导航项定义见 ContextMenuMgr.Frontend/MainWindow.xaml,页面视图类定义在 ContextMenuMgr.Frontend/Views/Pages/NavigationPages.cs:
| 模块 | 关键文件 |
|---|---|
| 前端页面视图 | ContextMenuMgr.Frontend/Views/SpecialMenuPageView.xaml |
| 页面 ViewModel | ContextMenuMgr.Frontend/ViewModels/SpecialMenuPageViewModel.cs |
| 后端服务 | ContextMenuMgr.Backend/Services/SpecialMenuService.cs |
| 契约与请求模型 | ContextMenuMgr.Contracts/SpecialMenuContracts.cs |
除了这四大页面,**“其他规则”**页还提供了右键拖拽(默认拖放效果:复制/移动/创建链接)、公共引用(CommandStore)、GUID 锁和 IE 菜单等进阶能力,入口见 ContextMenuMgr.Frontend/ViewModels/OtherRulesPageViewModel.cs。
七、常见问题 FAQ ❓
- 排序锁失败一定是权限不够吗?不一定。ACL 拒绝规则、所有者、继承状态都可能影响操作,此时建议先用外部工具修复 ACL 再重试,工具不会私自接管所有权。
- SendTo / Win+X 能用注册表编辑器改吗?不建议。它们主要是用户文件系统目录,用本工具操作更安全且支持恢复。
- WPS 和 Office 共存时新建菜单乱入?工具会以“待审核”方式检测 WPS 注入的 ShellNew 项和图标覆盖,由你决定是否保留,而不是自动删除。
掌握以上四个特殊菜单管理页面,你就能把 Windows 的右键体验真正握在自己手中 🚀
【免费下载链接】ContextMenuMgrContext Menu Manager Plus 是一个强大的实用程序,它可帮助您管理 Windows 上的右键菜单,并避免第三方向你的右键菜单里塞屎项目地址: https://gitcode.com/PLFJY/ContextMenuMgr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考