【免费下载链接】ContextMenuManager️ 一个管理 Windows 右键上下文菜单的程序支持Windows 7 - 11A program to manage the Windows right-click context menu with support of Windows 7 - 11项目地址https://gitcode.com/gh_mirrors/con/ContextMenuManager点击查看免费下载ContextMenuManager 是一款免费的 Windows 右键菜单管理器它能把右键菜单中每一项的注册表来源解析出来让你安全地启用、禁用、改名、改图标。这篇文章将带新手搞懂它的底层原理Windows 右键菜单其实全部写在注册表里程序只是在按一套固定规则读取和修改这些注册表项。一、核心概念右键菜单 注册表中的场景分支Windows 并没有一个统一的菜单数据库而是为每一种右键对象文件、文件夹、磁盘分区……在注册表中准备了独立分支。程序在 ShellList.cs 中把这些场景路径整理成一张常量表右键场景注册表分支场景路径所有类型文件HKEY_CLASSES_ROOT\*文件夹HKEY_CLASSES_ROOT\Folder磁盘分区HKEY_CLASSES_ROOT\Drive桌面背景HKEY_CLASSES_ROOT\DesktopBackground此电脑HKEY_CLASSES_ROOT\CLSID\{20D04FE0-...}回收站HKEY_CLASSES_ROOT\CLSID\{645FF040-...}加载流程在 LoadItems() 中先根据当前场景选定分支再在该分支下寻找两个关键子键——shell和ShellEx它们就是菜单项的两个仓库。二、第一步先弄清文件属于哪个类型右键一个.pdf文件时系统不会只查*而是先解析这个扩展名对应的类型名ProgId再去查该类型专属的菜单。解析顺序写在 FileExtension.cs 的GetOpenMode方法里优先读HKCU\...\Explorer\FileExts\.pdf\UserChoice\ProgId也就是你在打开方式里选择过的默认程序用户设置优先再查HKLM\SOFTWARE\Classes\.pdf的默认值最后查HKCRHKEY_CLASSES_ROOT其实是 HKLM 与 HKCU 的 Classes 合并视图。解析结果例如.pdf→PDFReader.1系统就会把HKCR\*通用和HKCR\PDFReader.1专属两处的菜单合并显示。程序界面里的自选扩展名场景正是手动复现了这一步。三、第二步两类菜单仓库 Shell 与 ShellEx在场景分支下shell与ShellEx两个子键各司其职由 LoadShellItems() 和 LoadShellExItems() 分别读取。Shell名字 命令简单直接shell下每个子键就是一个菜单项。以发送到某项为例结构类似HKEY_CLASSES_ROOT\*\shell\MyTool ├── (默认值 / MUIVerb) → 菜单上显示的中文名 ├── Icon → 图标路径 └── command └── (默认值) → 点击后执行的命令程序对应地读取显示名称MUIVerb优先没有就取子键的默认值最后退回子键名见 ItemText执行命令command子键的默认值ItemCommand图标Icon键值没有则按命令指向的文件推断ItemIcon。此外还支持SubCommands子键实现多级子菜单以及Positiontop/bottom 置顶置底、Extended需按住 Shift、HasLUAShield管理员盾牌图标等属性键。ShellExCOM 扩展只存一个 GUIDShellEx下的子键不存命令只存一个CLSIDGUID指向一个 COM 组件。读取逻辑在 ShellExItem.GetPathAndGuids()遍历ContextMenuHandlers子键下的每一项取出 GUID 后反查 CLSID 注册表获得显示名和图标文件。这类扩展比如压缩软件、网盘工具功能更强但也更常见消失问题程序因此为它单独提供了 CLSID 定位跳转。四、隐藏玄机菜单项为什么看不见注册表里存在 ≠ 菜单上显示。程序在 ItemVisible 中汇总了系统的全部隐藏规则键值作用版本HideBasedOnVelocityId 0x639bc8系统标准的隐藏标记Win10 1703LegacyDisable旧版隐藏标记Win7/8ProgrammaticAccessOnly仅编程接口可访问全版本CommandFlags低位含 8按位标记隐藏Vista对 ShellEx 型扩展隐藏方式更巧妙把所在子键从ContextMenuHandlers改名为-ContextMenuHandlers加个减号前缀系统就不再加载它——这正是 ItemVisible 的 setter 通过MoveTo实现禁用/恢复的原理不改数据、只改位置随时可还原。这个思路贯穿整个 ContextMenuManager禁用即打标记或挪窝恢复即反向操作比粗暴删除注册表安全得多。五、源码导读一张图看懂程序与注册表的映射右键场景文件/文件夹/磁盘… │ ShellList.MENUPATH_* 常量 ▼ 场景分支 HKEY_CLASSES_ROOT\场景\shell → ShellItem 逐子键读取 场景分支 HKEY_CLASSES_ROOT\场景\ShellEx → ShellExItem 逐 GUID 读取 公共菜单 HKLM\...\CommandStore\shell → StoreShellItem添加到收藏来源几个值得新手重点阅读的文件场景与加载主流程ShellList.csShell 型菜单项的属性读写ShellItem.csShellEx 型扩展的 GUID 解析ShellExItem.cs扩展名 → 类型解析FileExtension.cs注册表通用读写工具类RegistryEx.cs六、小结Windows 右键菜单没有任何魔法它是HKEY_CLASSES_ROOT下按场景划分的一堆shell/ShellEx注册表分支系统每次右键时按扩展名解析类型 → 合并通用与专属分支 → 过滤隐藏标记的流程组装出你看到的列表。ContextMenuManager 的全部功能本质上就是对这套规则的可视化呈现与规范化读写。理解了这篇原理你再看程序里的定位注册表导出注册表禁用按钮就已经知道它们背后到底动了什么。赞分享【免费下载链接】ContextMenuManager️ 一个管理 Windows 右键上下文菜单的程序支持Windows 7 - 11A program to manage the Windows right-click context menu with support of Windows 7 - 11项目地址https://gitcode.com/gh_mirrors/con/ContextMenuManager点击查看免费下载相关推荐如何永久保存微信聊天记录简单三步实现数据自主掌控如何永久保存微信聊天记录简单三步实现数据自主掌控 你是否担心过更换手机后那些珍贵的聊天记录会永远消失那些与家人的温暖对话、与朋友的美好回忆、工作中的重要讨终极Windows右键菜单管理指南ContextMenuManager让你的桌面效率提升10倍终极Windows右键菜单管理指南ContextMenuManager让你的桌面效率提升10倍 ContextMenuManager是一款纯粹的Windows桌面应用如何在半小时内快速完整部署开源CRM EspoCRM到自己的服务器如何在半小时内快速完整部署开源CRM EspoCRM到自己的服务器 昨晚一个销售离职客户跟进记录跟着人走了一半在 Excel 里一半在微信聊天框里。把客户后端前端企业应用上一篇Semantic Segmentation PyTorch错误排查与调试技巧终极指南从安装到训练完整解决方案下一篇Framed Tech Dark Border Gradient 实战指南用边框渐变与工程化框架构建暗色技术设计系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?