# windows-context-menu-manager **Repository Path**: hd_2000/windows-context-menu-manager ## Basic Information - **Project Name**: windows-context-menu-manager - **Description**: Windows 右键管理器:查看、搜索、可恢复禁用 Windows 10/11 传统右键菜单,支持备份恢复。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-14 - **Last Updated**: 2026-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows 右键管理器 中文便携工具,用于查看和可恢复地禁用 Windows 传统右键菜单。采用 C++17 / Win32,x64 单 EXE,静态链接 C++ 运行库,无需安装。最低 API 版本为 Windows 10 1607;建议 Windows 10 22H2 或 Windows 11。 ## 使用 1. 打开 `dist/ContextMenuManager.exe`,等待扫描完成。 2. 用搜索框和分类筛选菜单。选择项目,在下方查看注册位置、命令、扩展 DLL 和只读原因;Ctrl / Shift 支持多选。 3. 点击“禁用选中”。程序先保存恢复备份,再修改注册表并核验结果。 4. 要恢复,选中项目点击“启用 / 恢复”,也可从“备份与恢复”窗口选中历史记录恢复。 5. 系统级操作需要点击“管理员模式”,由 Windows 显示 UAC。取消后仍可使用普通权限实例。 Windows 11 中主要对应“显示更多选项”,不管理新版主菜单。Shell 扩展的一个注册入口可能产生多个菜单项;程序会提示选中的影响范围,只处理选中的入口。 “已注册”代表注册表中存在入口,不保证当前场景一定显示该菜单。不同文件类型、应用内部判断和系统策略都会影响实际显示。64 位与 32 位视图分别标注;部分 Classes 键在系统中共享,因此两种视图可能显示相同名称,这不同于重复扫描同一 ProgID。 ## 备份和恢复 自动备份目录为 `%LOCALAPPDATA%\ContextMenuManager`,不放在 EXE 旁。移动程序不会丢失当前 Windows 用户的备份。程序只允许同一会话中的单个实例运行,避免普通和管理员实例同时操作。 - 普通命令通过添加 `LegacyDisable` 禁用。恢复只还原该值,不覆盖其他命令内容。由其他软件禁用的项目没有本工具备份时,不提供直接启用。 - Shell 扩展备份对应 `ContextMenuHandlers` 子树的键和值,再移除该入口;不删除 COM 类或 DLL。恢复重建原子树。备份不保存注册表安全描述符,重建的键继承父键权限。 - 备份记录包含来源、注册表视图、原始数据、目标状态、时间及操作阶段。备份以临时文件写入、刷新到磁盘,再原子替换;备份失败不会修改注册表。 - “待检查 / 已导入”可能来自中断或导入。恢复会比较原始状态和禁用后的状态,已经恢复时只更新记录;状态冲突时保留现状,等待选择覆盖或取消。 - 导出和导入使用 `.cmbackup` 文件。导入只保存记录,不立即改注册表,不覆盖同编号的本地记录。请仅导入可信、属于本机的备份;它不是跨机器迁移格式,也没有数字签名。 - 恢复后的记录仍保留,可继续导出。损坏记录不会自动删除,备份窗口会报告读取错误。 操作后会通知 Shell 更新。部分扩展需重新打开文件夹或重启资源管理器才能刷新。“重启资源管理器”必须由用户手动点击并确认,会关闭文件夹窗口;请先结束文件复制任务。此按钮只在普通权限模式下执行,以保持桌面权限正确。 ## 只读范围 默认文件操作、Windows 系统组件、版本信息标记为 Microsoft 的组件、动态命令、级联菜单、无法可靠识别的扩展,以及不由 64 位资源管理器加载的 32 位扩展,按保守策略仅供查看。文件版本信息只用于保守分类,不是数字签名验证。 扫描直接读取 HKCU / HKLM 的 `Software\Classes`,不写 HKCR,不加载第三方 DLL。支持普通 `shell` 命令和 `shellex\ContextMenuHandlers`;其他 Shell 扩展类型、打包应用菜单和 Windows 11 新版菜单不在首版范围内。无法读取或扫描期间消失的注册位置可能被跳过;列表不是系统全部菜单的完整枚举。 ## 构建与测试 安装 Visual Studio 2022 C++ Build Tools(含 x64 编译器、Windows 10/11 SDK),运行: ```bat build.cmd ``` 脚本通过 `vswhere` 找到工具链,构建 `dist/ContextMenuManager.exe` 和 `build/engine_tests.exe`,然后运行隔离注册表测试。测试使用随机命名的 `HKCU\Software\ContextMenuManagerTests` 子树和临时目录,不修改真实 `Software\Classes` 菜单。测试通过后清理自己的数据;失败时保留路径供检查。 代码入口:`src/main.cpp` 为界面,`src/engine.cpp` 为扫描、日志和恢复,`tests/engine_tests.cpp` 为隔离集成测试。验证结果及未完成的系统人工测试见 `VALIDATION.md`。