【免费下载链接】RogueCleaner
流氓软件克星:扫描和清理 Windows 流氓右键菜单、自启动、计划任务、服务、浏览器插件和文件关联残留
流氓软件克星(RogueCleaner)v2 是一款用 C# WinForms 重写的 Windows 单文件清理工具,专门扫描和清理流氓右键菜单、开机自启动、计划任务、后台服务、浏览器插件和文件关联残留。这篇文章完整复盘了它从 PowerShell 脚本版走到 C# 单文件架构的原因、设计决策与验证方式,帮你看懂这次「从脚本到 C# WinForms 单文件」重写的来龙去脉。
🚪 先回答标题:为什么 PowerShell 版本撑不下去了
流氓软件克星 v1(v1.0.0-preview)发布时是一个「过渡架构」:GUI exe +RogueCleaner.ps1脚本 +rules规则目录,靠外部 PowerShell 脚本跑扫描和清理逻辑。
它能用,但缺点也很实在,最终正是这几个问题逼出了重写:
| 痛点 | 具体表现 |
|---|---|
| 发布包脏 | 用户要下 exe、.ps1、rules一堆文件,还常被 WinRAR SFX 自解压外壳「藏」着,缺文件、解压错目录就崩 |
| 杀软误报难解释 | 运行一个 exe 却往外释放 PowerShell 脚本,安全软件天然警惕,作者也说不清「为什么」 |
| 高 DPI 卡顿 | 200% 缩放下界面重排卡,表格滚动掉帧 |
| 扫描慢 | 单线程串行跑各类注册表/服务/任务枚举 |
| 误操作不可逆 | 删错了没有恢复入口,用户只能手动回滚注册表 |
| 更新麻烦 | 没有版本检查,升级要手动下载整套文件 |
一句话:v1 是「能跑就行」的脚本工具,v2 要做一个可恢复、可审查、可自动更新的单文件产品。这不是「换个语言」,而是产品形态的整体升级。
🧩 v2 单文件架构的核心决策
v2 最核心的决定只有一句话:运行时只保留一个 exe,其余全部内嵌或删除。
1. 砍掉所有运行时 sidecar 文件
v1 依赖这些外部文件,v2 全部移除:
- ❌
RogueCleaner.ps1(运行时脚本引擎) - ❌
rules\*.json(规则目录) - ❌ WinRAR SFX 自解压外壳
- ❌ base64 内嵌脚本
规则数据改为 C# 源码中的普通结构化数据,开源可审查。这样「发布物」就只剩一个文件:
流氓软件克星.exe2. 运行目录约定:exe 放哪,数据就建在哪
程序不会把自己搬家。你放桌面,它就在桌面同目录建一个数据目录:
流氓软件克星数据\ ├── reports # 扫描/清理/复扫报告 ├── backups # 清理前备份 ├── logs # 错误日志 ├── updates # 更新检查状态 ├── quarantine # 被移动隔离的文件 ├── state # 更新检查等运行状态 └── feedback # 脱敏识别反馈这个设计直接回应了 v1「目录散落、缺文件就崩」的抱怨——单文件 + 单一数据目录,用户一眼能看全。
3. 编译方式:用 Windows 自带的 .NET Framework 编译器
v2 保留C# WinForms + .NET Framework 4.x(兼容性覆盖 Win7 SP1 / Win10 / Win11)。构建脚本 Build-Exe.ps1 调用系统自带的csc.exe把 src/v2/ 下所有.cs编译成单 exe:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1输出就是根目录的流氓软件克星.exe,发布目录 dist\流氓软件克星 里也只有一个 exe。程序入口和版本信息定义在 RogueCleanerV2.cs 的AppMeta里。
🧵 多线程扫描引擎:从串行脚本到并行 C#
v1 的 PowerShell 是串行跑的;v2 把扫描拆成 10 类扫描器,用Parallel.Invoke并行执行,并发数取min(4, CPU 核心数)。扫描入口在 ScannerEngine.ScanAll:
- 右键菜单(传统
shell/shellex/ Win11 注册项) - 「此电脑」/资源管理器导航栏入口
- 开机启动注册表(
Run、RunOnce) - 启动文件夹
- Windows 后台服务
- 计划任务
- 浏览器插件(Chrome/Edge 扩展策略、Native Messaging Host、Firefox)
- 文件关联(图片/视频/压缩包/Office 的打开方式残留)
- 隐藏卸载入口
- 正在运行的弹窗/守护进程
每个扫描器内部再按注册表 root 分片并行,但限制并发避免卡系统。UI 侧用「先显示进度、分批追加结果、固定行高、关闭自动换行重算」的策略,专治高 DPI 下的表格卡顿——这正是 v1 最被吐槽的点之一。
所有扫描结果统一成一个Finding对象(见 Finding),字段包括Risk、Vendor、UserVisibleName、UserImpact、TechnicalLocation、Evidence等。UI 只显示人话(「在哪里冒出来」「用户会看到什么」「工具会怎么处理」),技术路径和证据放到悬停详情里——v2.0.3 专门为此把Safe360Ext、Q360AMPPL这类技术名换成了普通用户能看懂的描述。
🛡️ 备份 → 清理 → 复核 → 复扫:防止误操作的完整闭环
这是 v2 相对 v1 最「值钱」的升级:清理前备份,清理后复核并复扫。流程固定为 7 步:
- 用户勾选项目
- 二次确认(显示高风险数量和需要管理员权限的数量)
- 为每一项写备份
- 执行清理动作
- 逐项复核目标是否真的消失/禁用
- 自动复扫
- UI 显示成功、失败、跳过、残留
清理失败绝不显示为完成——权限不足、软件自保护、目标被立即重建、路径已变化,失败项会保留在复扫列表并显示具体原因。
恢复中心:误删可回滚
每次清理生成一个备份批次,存在流氓软件克星数据\backups\。主界面点「恢复中心」可以按批次回滚注册表、被移动文件、服务启动状态和计划任务状态。
- 支持整批恢复 / 单项恢复
- 注册表恢复带 32/64 位视图(
/reg:32或/reg:64) - 只有全部恢复成功才删除批次记录;任意一项失败就保留并显示原因
- 文件恢复时若原位置已有同名文件,不覆盖、不删备份,避免误伤用户文档
配套原则:不常驻后台、不加壳、不混淆、不静默更新、不绕过软件自保护、不改写
UserChoice、不默认卸载主程序、不删除用户文档。
🔄 版本更新与杀软误报处理
v2.0.6 起,更新走「软件内弹窗确认下载 → 自动替换 exe → 自动重启」的闭环,不再跳 GitHub 页面让用户手动下。检查逻辑按天缓存到流氓软件克星数据\state,绝不静默更新——只有用户点确认才下载 Release 里的直出 exe 并替换。
关于杀软误报:这个工具会读取/备份/删除注册表、禁用服务和计划任务,天然容易被启发式规则归为「系统工具类风险」。项目的应对策略是用透明度换信任——源码、构建方式、规则全部公开可审查;发布包只含 exe 和 SHA256 校验值;正式版还会移除验收测试器特征,进一步缩小误报面。详见 release/火绒误报回复.md 和 release/Win10Win11报错回复.md。
🧪 如何构建与验证单文件 EXE
想自己编译或审查源码,克隆仓库后一条命令构建:
git clone https://gitcode.com/gh_mirrors/ro/RogueCleaner cd RogueCleaner powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1v2 还内置了几个「烟测」参数,不弹 GUI、不清理,专供开发自检:
| 参数 | 作用 |
|---|---|
--scan-smoke | 只扫描并写报告,验证扫描链路 |
--identity-smoke | 验证厂商身份识别不误报(Corel GUID 含2345、系统 MSI 宿主等负向用例) |
--feedback-smoke | 验证反馈脱敏不泄露用户名/SID/邮箱等 |
--ui-smoke | 检查按钮可见性、详情面板、截图写入 reports |
发布前的完整验收会用Build-Exe.ps1 -ValidationBuild单独编译验证版,跑 10 个模拟工件(右键、开机启动、浏览器宿主、打开方式、计划任务、服务等),标准是RunnableCases=10, Passed=10, Failed=0(见 docs/validation/2026-07-20-v2-acceptance.md)。正式发布版不含验收器,只为缩小误报面。
📦 从 v1 到 v2.0.6 的版本演进
完整变更记录见 release/1.0到2.0.6更新说明_52pojie.md,关键节点:
- v2.0.1:确立「不能静默卸载就弹原厂卸载器」的边界;修复同一注册表键下多个启动项备份互相覆盖
- v2.0.2:修表格 tooltip 横向无限延伸、风险列颜色、EXE 发布包只含 exe
- v2.0.3:把技术名换成「人话」,收紧 WPS/bili/ASUS 等宽泛关键词,降低误报
- v2.0.4:恢复中心重做为青绿色主题,不再是默认灰白 WinForms
- v2.0.5:恢复中心「真的恢复」——逐项执行并逐项复核,支持 32/64 位注册表视图
- v2.0.6:软件内自动下载更新 + 恢复中心兼容旧版本备份记录
注意:从 v2.0.5 升到 v2.0.6 这一次仍可能需手动下载一次,因为 v2.0.5 自身还是旧更新逻辑;装上 v2.0.6 后,后续版本就走软件内自动下载重启了。
✨ 总结:这次重写到底解决了什么
流氓软件克星 v2 从 PowerShell 脚本到 C# WinForms 单文件,不是「换个语言」,而是把「能跑就行」的脚本工具,升级成一个可恢复、可审查、可自动更新的单文件产品:
- 单文件:告别
.ps1/rules/ SFX 外壳,用户只下一个 exe - 多线程:10 类扫描器并行,告别串行慢扫描和高 DPI 卡顿
- 可恢复:备份→清理→复核→复扫,恢复中心按批次回滚
- 可审查:源码、构建脚本、规则全公开,SHA256 校验,正式版缩小误报面
- 可更新:软件内弹窗确认下载、自动替换重启,绝不静默
核心原则始终如一:先备份、再清理、再复扫;宁可少删,也不替用户乱删。
想深入看架构,可以读 docs/superpowers/specs/2026-07-20-v2-single-file-design.md(v2 单文件设计)和 docs/superpowers/specs/2026-08-04-vendor-identity-false-positive-design.md(厂商识别误报治理)。源码主文件在 src/v2/RogueCleanerV2.cs,主题定义在 src/v2/UiTheme.cs。
【免费下载链接】RogueCleaner
流氓软件克星:扫描和清理 Windows 流氓右键菜单、自启动、计划任务、服务、浏览器插件和文件关联残留
相关推荐
FastAPI数据库迁移:Alembic版本控制完全指南
FastAPI数据库迁移:Alembic版本控制完全指南 FastAPI作为高性能的现代Python Web框架,在处理生产环境数据库变更时需要可靠的版本控制方
后端Web框架API设计CC Switch深度链接:3分钟掌握一键配置导入的终极技巧
CC Switch深度链接:3分钟掌握一键配置导入的终极技巧 还在为AI助手的繁琐配置头疼吗?CC Switch的深度链接功能ccswitch://彻底改变了这
AI 应用开发者工具桌面应用从卡顿到丝滑:为什么开发者正在抛弃asdf转向mise?
从卡顿到丝滑:为什么开发者正在抛弃asdf转向mise? 你是否也曾经历过这样的场景:每次打开终端等待100ms以上才能输入命令?切换项目时因 runtime
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考