一个专门揪 Windows 右键菜单、自启动、计划任务、服务、浏览器插件和文件关联残留的小工具。
做它的原因很简单:有些软件明明只是输入法、网盘、文档、下载器、看图工具,却很喜欢悄悄把自己塞进右键菜单、开机启动、浏览器扩展和后台服务里。用户只是想用一个功能,它们倒好,顺手把电脑当成自家客厅。
作者:aakk007
v2 改成 C# WinForms 单文件主程序:
- 运行时不再依赖
RogueCleaner.ps1、rules或其它外部 sidecar 文件。 - 仓库和源码包也不再保留旧 PowerShell 引擎、旧 Launcher 或 WinRAR SFX 一键运行脚本。
- 首次运行只在 exe 同目录创建一个数据目录:
流氓软件克星数据。 - 扫描核心在 C# 内,多线程扫描右键菜单、“此电脑/资源管理器”入口、启动项、服务、计划任务、浏览器扩展和文件关联。
- 清理前备份,清理后复核并复扫。
- 增加恢复中心,可以按批次回滚注册表、被移动文件、服务启动状态和计划任务状态。
- 检查更新会从 GitHub Release 读取最新版,用户确认后下载直出 exe,替换完成后自动重启。
- 修复清理右键菜单后可能无法恢复的问题:注册表备份失败时取消删除,防止右键菜单项被删除后无法恢复。
- 保护核心右键动词与系统命令:只提示,不删除,避免右键菜单整体损坏。
- 恢复中心部分恢复失败时,失败项会保留并可单独重试,不再丢失。
- 增加单实例保护:同一时间只保留一个主窗口。
- 如遇右键菜单异常、恢复中心不显示失败项或更新异常,请务必到项目问题区提交问题,并附上反馈样本(清理批次记录、截图、系统版本、复现步骤等),以便定位修复。
- 修复高缩放和窄窗口下统计卡、顶部操作栏、右键管理工具栏及部分编辑窗口可能被遮挡的问题。
- 优化反馈窗口、恢复中心和旧式菜单编辑器的自适应布局,主操作保持可见、可点击。
- 新增本地白名单:保留原始证据展示,不参与批量处理。
- 新增网盘虚拟盘只读诊断:只展示盘符证据,不删除设备、盘符或客户端。
- 新增安全软件误报复核材料生成,便于用户向安全软件厂商提交复核。
- 检查更新会显示最新发布说明摘要;本版本的发布说明全部使用中文。
- 已完成本地多档缩放几何回归;不同显示设备和缩放组合仍欢迎通过项目问题区反馈。
- 重做主界面与各功能窗体,统一紧凑卡片、圆角操作按钮、中文工具栏、清晰滚动条和软件图标展示。
- 总览、启动项、右键管理、弹窗/流氓诊断与恢复中心统一识别关联软件和图标,清理复扫后不再退回默认图标。
- 右键管理与风险诊断改用同一发现源,覆盖传统菜单、文件类型菜单、Shell 扩展和 Windows 11 现代右键;已禁用项目显示为“已治理”。
- 右键菜单优先显示资源管理器里的真实命令名称,补齐 Beyond Compare、WPS、搜狗、360 等通用插件的枚举、中文展示与定向处理。
- 主程序、附带产品和独立捆绑组件严格分开,减少按厂商关键词误报或错误卸载主程序。
- 恢复中心新增当前批次删除与旧记录清理,保留路径边界、二次确认和删除后复核。
- 默认普通权限启动,仅在处理系统级项目时请求 Windows UAC;取消或无管理员凭据仍可扫描和导出报告,提权后恢复页面与勾选但不自动清理。
- 修复自定义滚动条无法使用鼠标滚轮、扫描后工具栏遮挡、列表列宽/居中、详情栏过宽和部分注册表拒绝访问导致整次扫描失败的问题。
- 将正常右键菜单管理与风险诊断分开,新增 Shell 命令、Shell 扩展、文件类型菜单和 CommandStore 管理。
- 新增 ShellNew、SendTo、OpenWith、GUID 屏蔽、WinX、Windows 11 现代/UWP、IE 旧式菜单及安全增强菜单。
- 受保护注册表项拒绝访问时记录警告并继续扫描,不再让单个位置终止整次扫描。
- 通用弹窗、广告、守护行为标签不再冒充厂商身份,补充搜狗与未知 HotNews 的碰撞回归。
- 计划任务操作改用 Windows 任务计划 COM;服务操作仍沿用原有
sc.exe,不通过 WMI 创建或修改服务。 - 增加关于与开源致谢,说明 ContextMenuManager 的参考关系和独立实现边界。
普通用户下载 流氓软件克星.exe 后直接双击。
程序不会把自己搬家。你放桌面,它就在桌面运行;你放某个文件夹,它就在那个文件夹旁边创建:
流氓软件克星数据\
这个目录用于保存:
reports:扫描和清理报告backups:清理前备份logs:错误日志updates:更新检查状态quarantine:被移动的文件state:更新检查等运行状态feedback:用户主动生成、提交前可预览的脱敏识别反馈
程序不会创建桌面快捷方式,也不会改动开始菜单或启动项。
列表优先显示人话,不让普通用户看着注册表路径猜谜:
在哪里冒出来:右键菜单、开机启动、后台服务、计划任务、浏览器插件、文件关联等。用户会看到什么:右键菜单真实标题、服务名、任务名、打开方式名称。影响说明:它会在右键出现、开机自启、后台常驻,还是接管某类文件。工具会怎么处理:备份后删注册表、禁用服务、禁用计划任务、弹出卸载器,或者仅提示。- 鼠标悬停在行上会显示完整说明、技术位置和证据。
所有主列表统一通过软件身份解析器显示图标:优先采用已安装软件主程序图标,Shell DLL、服务 DLL 和动态右键组件图标只作后备。项目级优先级、缓存和回归要求见 docs/development/software-icon-presentation-standard.md。
所有业务窗体的刷新、恢复、显示/隐藏、删除和关闭按钮统一通过主题组件生成,固定语义颜色、圆角、尺寸、图标和悬停反馈;工具按钮必须独占一行。详细要求见 docs/development/ui-action-control-standard.md。
每次涉及功能或界面改动前,都会只读核对 GitHub Issue 反馈,确认哪些已有证据覆盖、哪些需要修复或补充样本;公开回复或关闭 Issue 仍由作者确认。规则见 docs/development/github-issue-feedback-triage-standard.md。
程序统一采用普通权限启动、按操作请求 Windows UAC 的权限模型;取消或无管理员凭据时继续使用普通模式,提权重启只恢复页面和待处理选择,不自动执行修改。详细要求见 docs/development/permission-elevation-standard.md。
所有用户可见的功能语义统一使用中文;第三方品牌可保留原名,但必须补充中文用途,原始英文标题、路径和命令只保留在技术详情中。详细要求见 docs/development/chinese-ui-display-standard.md。
主程序与附带产品严格分开处理:主程序不因厂商关键词进入卸载结果;独立附带产品才允许定向打开自己的卸载器,服务、任务、启动项和右键入口只处理对应项。详细要求见 docs/development/targeted-removal-boundary-standard.md。
默认打开程序这类容易误伤日常使用的项目只提示,不参与一键清理。 疑似捆绑/弹窗/守护组件如果有卸载命令,工具会显示为“弹出卸载器,用户自己确认”。这类项目不会被“勾选可清理”批量勾上,必须手动勾选。
当前内置识别:
- 360 系列
- WPS / 金山
- 百度 / 百度网盘
- 夸克 / 夸克网盘
- 搜狗
- 迅雷
- 钉钉
- 腾讯系
- 2345 系列
- Bandisoft / BandiView / Bandizip
- 猎豹 / 金山毒霸
- 驱动/硬件检测工具
- 国产压缩/看图工具
- 国产浏览器/导航
- Flash 中国特供组件
- 手机助手/设备助手
- 国产影音/游戏大厅
- PDF/办公捆绑工具
- 预装管家/厂商助手
扫描位置:
- 资源管理器右键菜单和常见 Shell 扩展
- “此电脑”、资源管理器导航栏和网络位置里的网盘/同步入口图标
- 开机启动注册表和启动文件夹
- Windows 后台服务
- Windows 计划任务
- Chrome / Edge 扩展策略和 Native Messaging Host
- Firefox/Mozilla Native Messaging Host
- 常见图片、视频、压缩包、Office 文档等文件关联和打开方式残留
- 疑似隐藏、不可移除、没有卸载命令的卸载项
默认不扫描主程序卸载项,避免不懂的人一键全选把正常软件主程序误卸载。 隐藏/无卸载入口的组件只报告,不默认卸载。 有卸载命令的疑似捆绑/弹窗/守护组件,清理时弹出原厂卸载器,由用户自己确认卸载。
厂商名称不是从整段注册表文本里做模糊子串猜测。程序会分别核对显示名、Publisher、文件版本信息、有效 Authenticode 签名、MSI 元数据和安装目录归属;GUID、哈希、PID、完整注册表路径以及 msiexec.exe、rundll32.exe 等系统宿主不能单独用来认定厂商。数字证书用于确认文件归属,不代表其弹窗、守护或隐藏行为合理。
如果确实命中独立的弹窗、广告、守护或自动恢复行为,但本地证据不足以确认厂商,结果会显示为“未知第三方”,并且只能提示,不能进入一键清理或自动卸载链。
- 打开软件默认不清理。
- 扫描结果默认不勾选。
勾选可清理不会勾选“仅提示”项目。- 清理前二次确认。
- 默认以普通权限启动,扫描、查看结果和导出报告不强制弹出 UAC。处理 HKLM、服务、计划任务等系统级项目时,点击“请求管理员权限”或按操作提示调用 Windows UAC;取消、没有管理员凭据或单位策略拒绝时继续保持普通模式,不会尝试绕过权限。提权重启后会恢复原页面和待处理勾选项,但不会自动执行清理。
- 清理后逐项复核,失败或残留会继续留在复扫列表里。
每次清理都会生成一个备份批次,保存在:
流氓软件克星数据\backups\
点 恢复中心 可以选择批次恢复。
恢复中心同时提供两种空间清理方式:
删除当前批次:只删除当前选中的恢复记录及同批次处理报告,删除前显示占用空间并二次确认。清理旧记录:保留最近 30 天的全部记录,并始终保留最新 20 个批次,只清理更早的积压记录。
恢复记录删除后不能再用于回滚;工具会限制删除路径只能位于自己的备份目录内,并在删除后复核。
程序会按天检查 GitHub Release 是否有新版本。发现新版本时会显示最新发布说明摘要,并弹窗询问是否下载并自动重启更新:
https://github.com/aakk007/RogueCleaner/releases
不会静默更新。只有用户在弹窗里确认后,才会下载 Release 里的直出 exe,并在本地完成替换重启。
当前推荐只下载 GitHub Release 里的直出 EXE:
RogueCleaner-v2.0.16-*.exe
压缩包主要给需要审查源码或保留完整发布包的人使用。每次打包会同时生成 SHA256SUMS-v2.0.16-*.txt,用于核对下载文件是否和发布文件一致。
如果安全软件提示风险,优先核对来源和 SHA256。这个工具会读取、备份、删除注册表项,禁用服务和计划任务,容易被启发式规则归为系统工具类风险;项目原则是不加壳、不混淆、不内嵌脚本、不做自解压一键包、不绕过安全软件。
需要 Windows 自带的 .NET Framework 4.x 编译器:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1输出:
流氓软件克星.exe
dist\流氓软件克星\流氓软件克星.exe
v2 发布目录只包含 exe,不再包含 .md、.ps1 或规则目录。源码包只包含 v2 源码、manifest、图标和构建脚本,不再混入旧 Launcher、旧 PowerShell 运行链路或 WinRAR SFX 自解压脚本。
开发烟测:
.\流氓软件克星.exe --scan-smoke这个参数只扫描并写报告,不弹 GUI,不执行清理。GUI 扫描异常时也会写入 reports\scan-error-*.json,方便把失败证据发回来,而不是只剩一句“扫描失败”。
厂商身份碰撞回归:
.\流氓软件克星.exe --identity-smoke这个参数会验证 Corel GUID 中偶然出现 2345、系统 MSI 宿主、Thunderbird,以及各厂商关键词出现在 GUID、随机路径或注册表位置时均不会误认厂商。
反馈脱敏回归:
.\流氓软件克星.exe --feedback-smoke这个参数会用包含用户名、SID、用户目录、邮箱、URL、令牌和网络地址的模拟证据验证反馈脱敏,失败时返回非零退出码并在 reports 中写入结果。
界面布局回归:
.\流氓软件克星.exe --ui-smoke这个参数会在默认窗口和最小窗口下检查“开始扫描”“清理勾选”“检查更新”“反馈”的可见性与排列,填充本地模拟结果验证右侧详情面板,并把主界面、最小窗口和反馈窗体截图写入 reports。它还会执行 100%/125%/150%/200% 的进程内几何模拟,检查换行、父容器裁切和按钮文字;该模拟不能代替真实 Windows 缩放/实际 DeviceDpi 的人工验收,在对外宣称真实高缩放已验证或关闭相关反馈前,仍须按 docs/validation/2026-08-08-ui-dpi-release-gate.md 完成真机矩阵。它不扫描、清理或提交反馈。
右键管理与权限回归(仅验证构建):
.\流氓软件克星.exe --permission-smoke
.\流氓软件克星.exe --context-menu-smoke
.\流氓软件克星.exe --special-menu-smoke
.\流氓软件克星.exe --advanced-menu-smoke前者模拟受保护注册表拒绝读取,验证整次扫描仍能完成并记录警告;后者使用 CodexRogueCleanerTest 前缀的当前用户测试项,执行枚举、禁用、备份、恢复和复核,并在结束后清理测试项。
扫描后,可从顶部“反馈”入口反馈当前选中的结果,并选择误报、漏报、身份错误或关联错误;漏报不要求先选中扫描结果。程序只提取当前项目需要的字段,先在本地预览并脱敏,再保存到 流氓软件克星数据\feedback。选择“复制并打开 GitHub”后,详细内容进入剪贴板,浏览器打开结构化 Issue 表单,最终是否公开提交由用户确认。
程序不会保存 GitHub Token,也不会在后台直接提交。默认不包含文件 SHA256,不上传文件或完整系统清单;用户名、SID、计算机名、用户目录、邮箱、URL、令牌和网络地址会被替换。GitHub Issue 仅作为待验证样本,后续需复核并转成回归用例,不能直接改变本机识别或清理规则。
在结果表中右键项目,选择“加入/移除本地白名单”,即可管理本地白名单。白名单保存于 流氓软件克星数据\state\user-whitelist.json;命中项目仍会展示原始证据,但固定为“已白名单”、不可勾选,也不会进入批量处理。
扫描会对名称或卷标具有明确网盘特征的盘符进行只读诊断。它只展示盘符、类型、卷标和文件系统证据,绝不自动卸载网盘、删除设备、移除驱动器或改写盘符。
如需向安全软件厂商申诉误报,可运行:
.\流氓软件克星.exe --vendor-review-smoke程序会在 流氓软件克星数据\reports 生成包含版本、SHA-256、签名状态与生成时间的本地 Markdown 材料;不会自行提交或规避安全软件。
左侧“右键管理”会独立列出正常和可疑的 Shell 命令、Shell 扩展、拖放处理器、文件类型菜单以及 CommandStore 命令仓库;它与流氓诊断的风险结果分开,不会因为出现在管理列表中就被判定为风险项。
右键管理与开始扫描必须使用同一个发现服务,覆盖传统菜单、文件类型专属菜单和 Windows 11 现代右键扩展。风险诊断在同一清单上做身份与行为筛选:已启用的可疑插件进入精确禁用,已禁用的插件继续显示为“已治理”;软件更新或重装后重新启用时,下次扫描会再次发现。扫描不自动修改注册表,也不增加后台常驻监控。详细要求见 docs/development/context-menu-discovery-consistency-standard.md。
普通右键管理还会合并应用包清单明确声明、且能确认属于第三方软件的 Windows 现代右键扩展,例如 Beyond Compare 5 的打包右键组件;微软系统包继续隐藏。用户界面中的菜单名称、类型、状态和说明统一使用中文,软件品牌、路径、命令和组件编号保留原始证据。
“右键里显示的名称”优先采用资源管理器真正显示的命令文字,例如“打开”“选择左边文件进行比较”,不再只写“某软件右键菜单”。静态命令直接读取注册表和系统文字资源;动态扩展在隔离子进程中读取接口或组件文字资源,单项超时会立即终止并回退到明确的“动态右键命令(文字未读取)”,不会阻塞主界面。应用包的现代声明和传统兼容声明统一扫描、按组件与出现位置去重,不为单个软件写专用扫描入口。
当前支持启用、禁用、编辑名称/图标/命令、添加菜单、添加级联子菜单、删除、复制详情和定位注册表。添加操作默认写入当前用户;所有修改都会保存原注册表值和子键结构,写入后立即复核,并可从恢复中心还原。
“专用模块”进一步管理:
- ShellNew 新建菜单:查看、添加空白/模板项、启停和删除。
- SendTo 发送到:查看、创建快捷方式、移入禁用区、删除和恢复。
- OpenWith 打开方式:覆盖
OpenWithProgids、OpenWithList和Applications,支持关联项启停、添加和恢复。 - GUID 屏蔽:查看、添加或解除
Shell Extensions\Blocked项。
专用模块使用独立恢复清单,同时兼容现有恢复中心。验证构建可运行 --special-menu-smoke,在当前用户范围执行四类测试项的创建、枚举、禁用、恢复和清理。
“高级兼容”继续覆盖:
- WinX 快捷菜单:按
Group1/2/3查看已有有效快捷方式,支持启用、禁用、删除、组内上移/下移和恢复。Windows 没有公开任意新建 WinX 项的受支持接口,因此不生成可能被系统拒绝的伪哈希快捷方式。 - Windows 11 现代 / UWP 菜单:解析已安装包的
AppxManifest.xml,只列出明确声明windows.fileExplorerContextMenus的IExplorerCommandCLSID;开关只写当前用户Shell Extensions\Blocked,不修改应用包注册、文件或 ACL。 - IE 旧式菜单:管理当前用户和所有用户的
Internet Explorer\MenuExt,支持添加、编辑、启停、删除和恢复;受保护位置拒绝访问时只报告错误,不接管权限。 - 安全增强菜单:提供“复制完整路径”“用记事本打开”“在此处打开命令提示符”三项独立配方,不下载脚本、不取得 TrustedInstaller 权限,安装和移除都可从恢复中心撤销。
验证构建的 --advanced-menu-smoke 使用隔离的 WinX 目录和当前用户测试注册表,覆盖文件移动、IE 菜单、现代菜单屏蔽值、增强配方及恢复,并在结束后清理测试项。现代菜单识别依据微软的 File Explorer packaged context menu 文档,不会把普通 Packaged COM 误当成右键菜单。
发布前清理验收需单独编译验证版,正式发布版不带验收器,减少安全软件启发式误报:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1 -ValidationBuild
.\dist\流氓软件克星\流氓软件克星.exe --acceptance-test这个参数会创建带 CodexRogueCleanerTest 前缀的模拟右键菜单、开机启动、浏览器宿主、文件打开方式、计划任务和服务项,调用正式扫描/清理/恢复核心,再写入验收报告。
注意:服务项需要管理员权限;如果当前系统策略禁止创建注册表或计划任务模拟工件,报告里会显示 SetupFailed,不能把这种结果当成“功能已验证”。
- 不常驻后台。
- 不加壳。
- 不混淆。
- 不静默更新。
- 不绕过软件自保护。
- 不改写
UserChoice。 - 不默认卸载主程序。
- 不删除用户文档。
- 先备份,再清理,清理后复扫。
右键菜单管理的功能范围和交互设计参考了 ContextMenuManager,原作者为蓝点lilac。该项目采用 GNU GPL v3;流氓软件克星没有复制或嵌入其源码、资源字典和图片,相关功能依据 Windows Shell 与注册表行为独立实现,本项目继续采用 MIT 许可证。