geek-uninstaller:C++ 高性能软件卸载与残留清理工具架构解析

📦 项目开源地址:geek-uninstaller
⭐ Stars: 2.5k+
🛠️ C++

💡 项目定位:软件卸载与残留垃圾清理工具,深度扫描清理卸载软件后残留的注册表项和文件碎片。

1. 项目基本信息

项目名称:geek-uninstaller
官方开源地址geek-uninstaller
核心语言技术栈:C++
Stars 关注度:2.5k+
主要应用场景:Windows 平台软件卸载、注册表深度清理、残留文件碎片扫描、系统垃圾回收

2. 简介与架构亮点

诞生背景与业务痛点

Windows 平台长期使用过程中,传统软件卸载往往留下大量"幽灵文件"——卸载程序仅删除主程序文件,却对注册表项、AppData 目录、ProgramData 文件夹、临时文件等残留内容束手无策。这些残留数据不仅占用磁盘空间,还会导致注册表臃肿、系统运行缓慢,甚至引发软件冲突。geek-uninstaller 正是为了解决这一痛点而生。

架构设计亮点

┌─────────────────────────────────────────────────┐
│ geek-uninstaller 架构概览 │
├─────────────┬─────────────┬─────────────────────┤
│ UI 层 │ 核心引擎 │ 扫描清理层 │
│ (Qt/WTL) │ (C++ Core) │ (Registry+FS) │
├─────────────┼─────────────┼─────────────────────┤
│ 交互界面 │ 卸载流程 │ 残留检测算法 │
│ 列表展示 │ 监控钩子 │ 深度扫描引擎 │
│ 进度反馈 │ 清理执行 │ 安全删除机制 │
└─────────────┴─────────────┴─────────────────────┘

模块化设计:项目采用分层架构,UI 层、核心卸载引擎、扫描清理模块三者解耦,便于独立测试与扩展。

卸载监控机制:通过挂钩 Windows 卸载 API(如 MsiInstallProductShellExecute 等),在卸载过程中实时监控文件创建/删除、注册表写入等操作,建立"卸载前后快照对比"模型。

安全清理策略:内置双重保护机制——敏感注册表项白名单过滤、文件删除前二次确认,避免误删系统关键文件。

3. 开发语言和技术栈

技术栈全景图

| 层级 | 技术选型 | 说明 |
|——|———|——|
| 后端语言 | C++ (11/14) | 高性能原生开发,直接调用 Windows API |
| UI 框架 | WTL / Qt | 轻量级 Windows 原生 UI,减少运行时依赖 |
| 核心库 | Windows API | 直接使用 Win32 API 进行文件系统与注册表操作 |
| 构建系统 | Visual Studio / CMake | 支持多版本编译输出 |

关键技术细节

后端技术栈
– 开发语言:C++,充分利用 RAII 机制管理资源,避免内存泄漏
– 核心框架:无第三方 UI 框架依赖,直接调用 Windows Shell 接口
– API 规范:遵循 Windows API 最佳实践,使用 SHGetFolderPathRegOpenKeyEx 等原生接口

前端技术栈
– UI 组件:WTL(Windows Template Library)或 Qt,提供轻量级、高响应速度界面
– 交互设计:列表展示已安装程序,支持右键菜单、批量操作
– 多端适配:仅支持 Windows 平台(x86/x64)

数据与基础设施
– 数据存储:注册表(HKLMHKCU)、文件系统(%ProgramFiles%%AppData%
– 缓存机制:卸载过程快照缓存,支持对比分析
– 容器化支持:暂无 Docker 支持(原生 Windows 工具)

4. 项目核心功能介绍

功能模块矩阵

| 功能模块 | 核心能力 | 应用场景 |
|———|———|———|
| 智能卸载 | 调用系统卸载程序,自动处理卸载向导 | 常规软件卸载 |
| 深度扫描 | 扫描注册表残留项与孤立文件 | 卸载后清理 |
| 快照对比 | 卸载前后系统状态对比 | 精准定位残留 |
| 批量操作 | 多选软件统一卸载 | 批量清理场景 |
| 强制删除 | 解锁并删除被占用文件 | 顽固残留清理 |
| 白名单保护 | 系统关键路径保护 | 防止误删 |

功能详解

智能卸载引擎
> geek-uninstaller 的核心竞争力在于其"卸载+清理"一体化流程。传统卸载工具仅执行系统卸载程序,而 geek-uninstaller 在卸载完成后自动触发深度扫描,识别并清理残留。

深度扫描算法
– 注册表扫描:遍历 HKLMSOFTWAREHKCUSoftware 等键值,识别已卸载软件残留
– 文件系统扫描:检查 Program FilesAppDataLocal AppData 等目录
– 孤儿文件检测:通过文件路径与注册表关联关系判断文件是否孤立

安全机制
– 删除前预览:展示所有待清理项,用户确认后才执行
– 回收站支持:文件先移入回收站,支持恢复
– 权限提升:UAC 提权确保系统级清理权限

5. 仓库地址和下载

仓库链接点击前往 GitHub / 官方开源仓库地址:geek-uninstaller
网盘下载链接:暂无(推荐直接通过上方开源仓库 Releases 页面或 Git Clone 获取最新源码与更新)

获取方式
1. Release 版本:访问 GitHub Releases 页面下载编译好的可执行文件,适合普通用户
2. 源码编译:克隆仓库后使用 Visual Studio 打开解决方案文件,适合开发者二次开发
3. 便携版:提供免安装便携版本,可直接从 U 盘运行

6. 开源协议和注意事项

开源协议

geek-uninstaller 采用 MIT 开源许可证,允许用户自由使用、修改、分发,包括商业用途。

商业使用规范

– ✅ 允许商业软件集成
– ✅ 允许修改后闭源发布
– ⚠️ 需保留原始版权声明
– ⚠️ 不提供任何质量担保

二次开发注意事项

关键注意事项

1. 系统权限:注册表与系统目录操作需要管理员权限,开发时需注意 UAC 提权处理
2. 注册表安全:深度扫描可能触及系统关键键值,务必实现白名单过滤机制
3. 文件锁定处理:部分残留文件可能被系统进程占用,需实现文件解锁策略(如使用 MoveFileExRESTART_DELETE 标志)
4. 兼容性测试:需覆盖 Windows 7/8/10/11 多版本,注意 API 差异(如 SHGetKnownFolderPath 仅 Vista+ 支持)

安全最佳实践

> 建议二次开发者遵循以下原则:
> – 所有删除操作前记录操作日志
> – 实现"撤销"功能,支持清理后恢复
> – 对系统关键路径(如 C:WindowsC:Program Files (x86)Windows)设置保护阈值
> – 定期备份注册表,防止误操作导致系统异常

部署建议
– 生产环境部署前进行充分测试,建议在虚拟机中验证清理效果
– 企业环境可打包为 MSI 安装包,通过组策略统一部署
– 注意软件版本更新,及时跟进安全修复

📥 源码下载与项目直达
源码下载地址:geek-uninstaller 官方仓库直达下载(https://github.com/geek-uninstaller)
Git 克隆命令:git clone https://github.com/geek-uninstaller.git
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容