资讯动态

Context Menu Manager Plus 架构剖析:WPF 前端、LocalSystem 服务、托盘宿主与探测进程的四进程协作完全指南

发布时间:2026/9/27 0:46:14 来源:尧图企业网站定制
Context Menu Manager Plus 架构剖析WPF 前端、LocalSystem 服务、托盘宿主与探测进程的四进程协作完全指南【免费下载链接】ContextMenuMgrContext Menu Manager Plus 是一个强大的实用程序它可帮助您管理 Windows 上的右键菜单并避免第三方向你的右键菜单里塞屎项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuMgrContext Menu Manager Plus是一款强大的 Windows 右键菜单管理工具核心目标是帮你管理传统与 Windows 11 右键菜单并拦截第三方软件向右键菜单里塞屎。它由WPF 前端、LocalSystem 后端服务、托盘宿主TrayHost与隔离探测进程ProbeHost四个进程协同工作。本文将从普通用户视角拆解这套四进程协作架构谁负责界面、谁负责注册表、谁负责通知、谁负责隔离危险操作以及它们之间如何通过命名管道通信。1️⃣ 为什么右键菜单管理工具需要四个进程管理 Windows 右键菜单看似简单实则涉及三类互相冲突的需求高权限修改HKLM等机器级注册表需要管理员级权限用户桌面窗口和托盘通知必须出现在当前用户的交互 Session 中安全性第三方 Shell Extension 是第三方 DLL直接加载可能拖垮宿主进程。单一进程无法同时满足这三点于是项目采用职责分离的四进程模型详见 docs/process-and-privilege-flows.md进程输出 exe运行身份一句话职责WPF 前端ContextMenuManagerPlus.exe当前用户界面交互只发指令不碰注册表后端服务ContextMenuManagerPlus.Service.exeLocalSystem扫描注册表、执行开关/审核/保护托盘宿主ContextMenuManagerPlus.TrayHost.exe当前用户 Session托盘图标、后台通知、拉起前端探测进程ContextMenuMgr.ProbeHost.exe当前用户隔离探测第三方 Shell Extension另有第五个成员ContractsContextMenuMgr.Contracts/它是共享的类库定义三个进程间说同一门语言的消息契约。2️⃣ 项目结构代码目录如何对应四进程整个解决方案按进程切分目录一看便知见 ContextMenuMgr.slnxWPF 前端ContextMenuMgr.Frontend/ —— 页面、导航、搜索、设置基于 .NET WPF WPF-UI 构建后端服务ContextMenuMgr.Backend/ —— 注册表目录、监控、审核队列、Windows 11 菜单、注册表保护等全部核心逻辑托盘宿主ContextMenuMgr.TrayHost/ —— 原生 Win32 托盘与通知探测进程ContextMenuMgr.ProbeHost/ —— 原生 C 编写的短生命周期隔离进程消息契约ContextMenuMgr.Contracts/ —— 命名管道协议、请求/响应、通知模型安装程序Installer/build_Installer.iss —— 基于 Inno Setup 6 的安装脚本。这种一进程一目录的组织方式是阅读源码最快的地图。3️⃣ WPF 前端只动嘴不动手前端MainWindow.xaml MainWindow.xaml.cs负责你看到的一切导航栏、全局搜索、分类页面、审核队列、设置页。它的架构纪律非常明确前端不直接修改注册表也不直接加载第三方 Shell Extension DLL。所有高权限操作都通过 NamedPipeBackendClient.cs 打包成请求发给后端服务处理。前端还承担两个启动器角色通过 BackendServiceManager.cs 触发 UAC 提权安装/修复服务通过 ContextMenuDeepAnalysisService.cs 启动探测进程。 对用户来说这意味着界面永远以普通用户身份运行不会因为一个 UI 线程的问题把注册表操作搞到一半。4️⃣ LocalSystem 后端服务真正的大脑后端服务BackendRuntime.cs、BackendWindowsService.cs以LocalSystem身份随 Windows 启动是全部核心逻辑的所在地菜单快照与监控ContextMenuRegistryCatalog.cs 枚举传统shell/shellex菜单项ContextMenuRegistryMonitor.cs 持续轮询发现第三方新塞进来的菜单项先拦截再审核新增项会被立即隔离禁用标记待审核推送通知给你做允许 / 保持禁用 / 移除三选一——这是本项目与普通菜单开关器最大的区别状态持久化ContextMenuStateStore.cs 用崩溃安全的分阶段写入保存审核状态与删除备份记录注册表写保护RegistryProtectionAcl.cs 通过 ACL 直接阻止第三方写入受监控的注册表根Windows 11 新菜单Windows11ContextMenuCatalog.cs 与 Windows11ContextMenuService.cs 并行管理 Win11 打包菜单项。一个关键细节LocalSystem 的HKCU不是你的HKCU。服务通过解析前端连接传来的用户 SID写HKEY_USERS\SID下的用户注册表 hive见 BackendUserContextResolver.cs避免权限够高但写错用户的经典坑。5️⃣ 托盘宿主通知与唤醒的信使Windows 服务运行在无桌面的服务 Session无法直接弹通知。TrayHostNativeTrayHost.cs、TrayBackendPipeClient.cs就是为此而生的用户 Session 代理后端服务 → 命名管道通知 → TrayHost → 系统托盘气泡 → 你点击 → 拉起前端审核页后端还会在用户登录/解锁时用 WTS 用户 token 把 TrayHost 投放到正确的交互桌面FrontendAutostartLauncher.cs。隐藏托盘图标只是隐藏图标TrayHost 进程仍在默默工作。6️⃣ 探测进程 ProbeHost把危险操作关进沙箱第三方 Shell Extension 是在进程内加载的 COM DLL——崩溃、卡死、架构不匹配都是常态。若在 UI 进程里直接加载一个坏 DLL 就能带走你的整个界面。因此 Deep Analysis 交给独立的原生 C 进程 ContextMenuMgr.ProbeHost/源码入口 main.cpp前端读取目标 handler DLL 的 PE 架构从ProbeHost\x86 / x64 / arm64中精确匹配对应架构的可执行文件ProbeHost 在隔离环境中CoCreateInstance并调用IContextMenu.QueryContextMenu把菜单文字与图标以 JSON 返回前端它不写注册表、不执行命令、不常驻——就算被第三方 DLL 拖崩损失的只是一个一次性进程普通菜单管理完全不受影响详见 docs/deep-analysis-probehost.md。7️⃣ 四条通信链路四进程如何协作三个管道名定义在 PipeConstants.csContextMenuMgr.Backend、ContextMenuMgr.Frontend.Control、ContextMenuMgr.TrayHost.Control。四条链路各有分工链路形式用途链路 A前端 → 命名管道 → 服务快照、开关、审核、删除、Win11 管理、重启 Explorer 等日常操作链路 B前端 → UAC 提权启动器安装/修复/卸载服务、设置启动模式一次性提权进程用完即走链路 C服务 → 用户 Session服务在正确桌面拉起 TrayHost / 前端链路 D前端 → ProbeHostDeep Analysis 隔离探测临时文件 进程退出码传结果消息体采用统一的信封/请求/响应模型PipeEnvelope.cs、PipeRequest.cs、PipeCommand.cs前端每个请求还携带ClientOperationId用于抑制自己触发的状态广播回显——你在界面点禁用不会看到自己产生的重复通知。8️⃣ 排错指南日志文件速查出问题先看日志按问题类型选择路径定义于 RuntimePaths.cs日志位置看什么frontend-debug.log日志目录前端命令、搜索、Deep Analysis 启动与解析backend.log日志目录管道请求、用户上下文解析、注册表操作trayhost.log日志目录托盘启动、通知、唤醒前端bootstrap.log日志目录UAC 服务安装/卸载过程service-startup.log日志目录服务早期启动失败完整排错思路见 docs/troubleshooting.md。 总结一次拦截第三方菜单项的完整旅程把四进程串起来你就能理解整个系统如何运转后端服务轮询注册表发现第三方新菜单项 → 立即隔离禁用服务通过命名管道推送ItemDetected通知给TrayHostTrayHost 在你的桌面弹出托盘气泡点击后唤醒WPF 前端前端打开审核页你选择允许 / 保持禁用 / 移除指令经管道回到服务执行若你想看清这个菜单项到底是什么Deep Analysis 会临时启动架构匹配的 ProbeHost隔离探测后安全返回结果。界面归前端、权限归服务、桌面归托盘、风险归探测——这就是 Context Menu Manager Plus 四进程协作架构的全部精髓。想继续深入推荐阅读项目内置文档 docs/developer-guide.md 与 docs/registry-model.md以及仓库中的 AGENTS.md 维护者指南。【免费下载链接】ContextMenuMgrContext Menu Manager Plus 是一个强大的实用程序它可帮助您管理 Windows 上的右键菜单并避免第三方向你的右键菜单里塞屎项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuMgr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑