垃圾清理
按类型扫描磁盘垃圾,扫描结果按大小与安全等级呈现,勾选后统一清理。

能清理什么
内置 23 个分类 / 1623 条规则,覆盖 150+ 款软件,常见分组:
| 分类 | 典型路径 | 安全等级 |
|---|---|---|
| 系统临时 | %TEMP%、C:\Windows\Temp、各用户 Local\Temp | 安全 |
| 系统更新 | C:\Windows\SoftwareDistribution\Download | 安全 |
| 系统日志 | C:\Windows\Logs、PerfLogs、崩溃转储 | 安全 / 谨慎 |
| 系统组件 | Downloaded Program Files、Prefetch | 谨慎 |
| 浏览器 | Edge / Chrome / Firefox 缓存 | 安全 |
| 开发缓存 | npm、pip、NuGet、Gradle、Maven 缓存 | 安全 |
| 应用缓存 | QQ / 微信 / 钉钉 / 网盘 / 输入法等客户端缓存 | 安全 / 谨慎 |
| 回收站 | 各分区 $Recycle.Bin | 谨慎 |
每条规则都标注 是否需要管理员、是否建议先关闭相关程序,避免清理时文件被占用。
操作步骤
页面刻意只做三件事:看磁盘、扫描、清理。
- 进页面先看磁盘占用 ——列表显示每个分区的已用 / 总容量与百分比,不用点任何按钮。
- 扫描 ——页面中间只有一个「扫描」按钮,直接分析全盘(不需要预先选择扫描哪类垃圾)。扫描过程显示进度与当前路径,可随时等待完成。
- 勾选 ——结果按分类折叠展示,每条显示名称、文件数、安全等级与体积。可点分类右侧「全选」,也可逐条勾选;顶部实时显示「合计 / 已选」。
- 清理 ——点「清理所选」执行,被占用的文件会登记为"重启后删除";完成后自动重新扫描并释放空间统计。
为什么不允许手动指定扫描目录
扫描范围固定在系统盘与数据盘的真实垃圾路径上(规则表里已经写好了 %TEMP%、SoftwareDistribution\Download、浏览器与开发工具缓存等)。让人手动加路径,实际只会拖慢扫描、并让"清理了哪"变得不可预期 —— 需要精确清理某个目录时,用资源管理器更直接。
实现要点
- 枚举:
FileSystemEnumerable<T>+EnumerationOptions(跳过重解析点,避免走进符号链接循环),并行统计,NVMe 上可达数万文件/秒。 - 路径模板:规则用
%ENV%、{Drive}、{AllUsers}、*等占位符描述,避免写死盘符;*只在必要时逐段展开,不做全盘递归。 - 安全护栏:删除前统一经过路径校验,拦截盘符根目录、系统关键目录与含
..的路径。 - 占用处理:
MoveFileEx(..., MOVEFILE_DELAY_UNTIL_REBOOT)标记重启删除;回收站用SHEmptyRecycleBin清空。 - 到回收站:设置里可开启"清理到回收站",改用可恢复的删除方式。
注意事项
清理前请确认
- 「系统更新缓存」删除后,已下载但未安装的补丁需要重新下载。
- 「Prefetch」删除后,程序首次启动会稍慢(系统会自动重建)。
- 部分国产软件的缓存目录里含聊天记录/配置文件,删除前请确认规则描述。
规则数据在 src/WinTools.Infrastructure/Rules/cleanup-rules.json,可自行增补(格式见 开发指引)。
