一个免安装的 Windows 磁盘清理工具。打开即自动扫描可清理项目并显示占用大小,勾选后一键永久删除。(正在重构中将更改基于形式与增加更多功能)
基于 Windows 自带的 PowerShell 5.1 与 WinForms 实现,不依赖任何运行库,整个文件夹拷贝到其他电脑即可直接使用。
界面采用 Miuix 设计风格。
- 启动动画:(如不喜欢可使用纯净版)打开时在内容区演出一只液态玻璃兽爪,全程 5 秒,动画期间点一下可立即跳过
- 打开即扫描:启动后自动统计各清理项的占用大小,并单独在后台计算耗时的系统组件清理。目录遍历按顶层分枝分片到多核并行(实测最重的系统组件库快约 2.7 倍),结果与单线程逐字节一致
- 磁盘占用可视:左栏环形图分「已勾选可释放 / 可清理未勾选 / 其他已用 / 可用空间」四段展示系统盘占比,环心显示可清理合计;鼠标靠近任一段时该段的外径会沿半径方向鼓大(整段不平移),并以折线引出该段的名称、数值与占比
- 自由勾选:43 个清理项按低 / 中 / 高三级风险分类,低风险默认勾选,中高风险默认不勾,避免误删
- 永久删除:直接删除文件,不经过回收站,确保空间真正释放
- 安全兜底:内置多路径黑名单,拒绝删除
C:\、C:\Windows、C:\Users、用户目录、程序自身目录等;执行前弹出确认框,高风险项额外提示 - 首次启动需同意免责声明:第一次打开时弹出免责声明,选择「我已阅读并同意」后才会进入主界面,同意状态记入配置文件,后续启动不再打扰
- 可选自动清理:可设为每次启动时按上次的勾选自动清理,并给出 5 秒倒计时允许中止
- 自动检测:启动时按本机目录判定每一项是否适用,没有对应软件或目录的项不会出现在列表里(没装 Office 就没有 Office 缓存项,没升级过系统就没有 Windows.old 项);列表右上角会显示「已隐藏 N 项」,日志里列出具体是哪些、为什么。目录存在但当前为空的项目仍会保留——它们下一轮就可能产生内容
- 便携:配置与程序同目录,不写注册表,不打系统补丁,拷走即用
- Windows 10 / 11(需 PowerShell 5.1 及以上,系统自带)
- 建议以管理员身份运行:部分系统级目录(如 Windows 更新缓存、DISM 组件清理)需要管理员权限才能操作
本工具的开发与验证环境:Windows 11 家庭版(中文)· 25H2 · 内部版本 26200 · PowerShell 5.1 · 显示缩放 125%(2560 × 1600)。其他系统版本、系统语言与缩放比例未经完整验证,详见 DISCLAIMER.md 第二节「测试环境」。
- 双击
RunCleaner.bat,启动器会自动申请管理员权限 - 首次启动会弹出免责声明,阅读后点击「我已阅读并同意」;若选择「不同意并退出」,程序会直接关闭
- 等待扫描完成,按需勾选要清理的项目
- 点击「开始清理」,在弹出的确认框中确认后执行
若不想使用管理员权限,可直接右键 DiskCleaner.ps1 选择「使用 PowerShell 运行」,此时标注「需管理员权限」的项目会无法清理。
遇到问题请先查阅 常见问题(FAQ);反馈问题时请使用仓库的 Issue 模板,并附上你的系统版本与 PowerShell 版本。(如果你知道的话)
下表是完整清单(43 项)。程序启动时会按本机实际情况自动隐藏不适用的项,所以你在界面上看到的通常少于这个数——例如本项目的测试机上显示 37 项,被隐藏的是没装对应软件的 6 项。隐藏规则与原因见上一节「自动检测」。
| 清理项 | 说明 | 需管理员 |
|---|---|---|
| 用户临时文件 | %TEMP% 中当前用户的临时文件 |
|
| 系统临时文件 | Windows\Temp 系统级临时文件 |
是 |
| 回收站 | 清空回收站,请先确认无待恢复内容 | |
| 缩略图 / 图标缓存 | 资源管理器缓存,删除后浏览图片时自动重建 | |
| 崩溃转储文件 | 程序崩溃生成的 .dmp 文件 |
|
| Windows 错误报告 | 系统错误报告缓存 | 是 |
| 浏览器缓存 | Edge / Chrome 网页缓存、代码缓存、GPU 缓存 | |
| 开发工具缓存 | pip / npm / yarn / NuGet / Go / Cargo / Gradle 下载缓存 | |
| 系统网络缓存 | WinINet / IE 模式网络缓存目录 | |
| 显卡着色器缓存 | DirectX 与 AMD / Intel 显卡着色器缓存,删除后游戏首次加载略慢 | |
| 浏览器 GPU 着色器缓存 | Edge / Chrome 的 GPU 着色器缓存,与网页缓存分开存放 | |
| WebView2 应用缓存 | Office / Teams 等内嵌浏览器组件的网页缓存 | |
| VS Code 缓存 | CachedData、GPU 缓存与启动日志,删除后首次启动略慢 |
|
| 浏览器崩溃报告 | Edge / Chrome 崩溃后留下的报告文件 | |
| 远程桌面缓存 | 远程桌面连接的位图缓存,删除后首次连接略慢 | |
| QQ 临时数据 | QQ 运行时的临时文件与日志,聊天记录与接收的文件不在范围内 | |
| 百度网盘日志 | 百度网盘客户端与内核的日志,下载的文件不在范围内 | |
| Visual Studio 日志 | VS 与安装程序的活动日志、遥测缓存 |
| 清理项 | 说明 | 需管理员 |
|---|---|---|
| Maven / Gradle 本地仓库 | Java 依赖本地仓库,删除后下次构建需重新下载 | |
| Windows 更新缓存 | 已下载的更新安装包,不影响已装好的更新 | 是 |
| 更新传递优化缓存 | Windows 更新的 P2P 分发缓存 | 是 |
| 预读取文件 (Prefetch) | 程序启动加速缓存,删除后前几次启动略慢 | 是 |
| Windows 日志 | 系统日志、CBS 与 DISM 日志 | 是 |
| 字体缓存 | 系统字体缓存,删除后自动重建 | 是 |
| NVIDIA 着色器缓存 | 显卡着色器缓存,删除后游戏首次加载略慢 | |
| NVIDIA 安装包缓存 | NVIDIA App 下载的驱动安装包残留 | 是 |
| 安装包缓存 (Package Cache) | 系统级与用户级的 VS / VC++ 安装包缓存,修复或卸载时可能需重下 | 是 |
| 系统事件日志 | 清空事件查看器中的日志内容 | 是 |
| Windows 组件清理 (DISM) | 清理 WinSxS 中的旧组件,耗时较长,清理后无法回滚已装更新。量列显示的是组件库当前占用,不代表可释放量,也不计入「可清理合计」 | 是 |
| Adobe 媒体缓存 | Premiere / After Effects 等生成的媒体缓存,删除后需重新生成 | |
| 商店应用缓存 | 商店 / UWP 应用的本地缓存与临时状态,个别应用会把设置放这里 | |
| Office 缓存 | Office 文档缓存与协作漫游缓存,删除后首次打开文档略慢 | |
| IDE 索引缓存 | JetBrains / Visual Studio 的索引缓存,删除后需重新索引项目 | |
| 系统组件日志与缓存 | 系统组件与 ETW / WMI 追踪日志、系统图标缓存 | 是 |
| 实时内核报告 | 显卡或驱动挂起时写下的实时内核转储,排查驱动问题用 | 是 |
| Windows Defender 缓存与旧特征库 | 特征库备份、引擎日志与安全中心缓存,当前生效的特征库会保留 | 是 |
| Visual Studio 安装源缓存 | 安装器下载的频道清单与引导程序缓存,安装状态记录会保留 | 是 |
| Windows Defender 保护历史记录 | Defender 的检测与处置记录,删除后保护历史会清空;隔离区不动 | 是 |
| 清理项 | 说明 | 需管理员 |
|---|---|---|
| 内存转储文件 | MEMORY.DMP 与 Minidump,用于排查蓝屏 |
是 |
| 系统升级残留目录 | $WINDOWS.~BT / $WINDOWS.~WS 升级临时目录,以及 $WinREAgent / $GetCurrent / Panther 安装残留 |
是 |
| Windows.old | 升级前的旧系统备份,删除后无法回退到旧版本 | 是 |
| 系统还原点 / 卷影副本 | 读取系统还原点占用的空间与个数;删除后无法回滚系统,依赖卷影副本的第三方备份也会一并失效 | 是 |
| 休眠文件 (hiberfil.sys) | 关闭休眠并删除休眠文件,会同时关闭「快速启动」 | 是 |
本工具执行的是永久删除,删除的文件不会进入回收站,无法通过常规手段恢复。使用前请留意:
- 「回收站」一项会清空回收站,请先确认其中没有待恢复的文件
- 「Windows.old」「系统升级残留目录」删除后将无法回退到旧版本系统
- 「系统还原点 / 卷影副本」删除后将无法回滚系统,依赖卷影副本的第三方备份也会一并失效
- 「休眠文件」删除会同时关闭「快速启动」功能
- 执行清理前程序会弹出确认框列出待删项;高风险项会额外提示
- 还原点的占用来自 VSS,需要管理员权限才能读取:普通权限下该行会显示「需管理员」而不是
0 B,以免让人误以为没有还原点。此时磁盘容量与还原点上限占比(读注册表即可)仍会照常显示
程序内置安全校验,会拒绝以下路径,避免误伤系统与自身:
C:\ C:\Windows C:\Users C:\Program Files C:\ProgramData
当前用户目录 程序自身所在目录
另外,删除前程序会解析清理目标的真实落点:若某个目标是联结点 / 符号链接(例如把 %TEMP% 重定向到内存盘),会先解析到真实目录、对真实位置再跑一次同一套校验,通不过就拒绝;解析不出来且无法排除是链接时同样拒绝。这样「把临时目录换成指向系统关键目录的链接」这类手法不会生效。
程序启动时会核对脚本自身的完整性:任何改动都会让它弹出提示框并停止运行,连清理功能也会一并失效(校验没通过时,删除引擎会拒绝一切目标)。这一条是为了让「拿改过的副本重新打包分发」难以悄悄发生。
为什么会加这两样:起因是身边朋友的公开项目被人二次修改后未作任何标注、拿去敛财。所以这里的「二次修改认证」不是为了禁止二改,而是要求改了就标明来源、别冒名顶替;防篡改保护的目的则很朴素——只是怕有人打开源码随手改了之后程序跑不起来(或改坏了自己还不知道),启动时先核对一下、被改过就直接说清楚,而不是让人对着一个莫名其妙报错的程序干瞪眼。想改的话走下面的授权通道就行,正常改、正常用。
如果你确实需要二次修改(二改),可以联系我获取跳过完整性校验的解锁密钥:
QQ:3406616048(加好友时请说明用途)
拿到密钥后,二选一:
# 方式一(推荐):把密钥单独写进程序同目录的 unlock.key
# 该文件已在 .gitignore 中,不会被提交,也不要放进发行包
# 方式二:命令行传入(注意命令行参数会显示在进程列表里)
powershell -ExecutionPolicy Bypass -File .\DiskCleaner.ps1 -UnlockKey "你的密钥"解锁后程序功能完整可用,但启动日志里会明确写出「本次已跳过脚本完整性校验」——解锁不等于隐身。
改完脚本后必须重新封装指纹,否则程序会被自己的篡改检测拦下(退出码 3):
powershell -ExecutionPolicy Bypass -File .\DiskCleaner.ps1 -IntegritySeal这一步同样需要密钥——封装与解锁共用同一道门,否则「改几行、自己封装一遍」就成了一条不留任何痕迹的旁路。把密钥放在程序同目录的 unlock.key 里(推荐),或用 -UnlockKey 传入;缺少有效密钥时封装会被拒绝,退出码 4。
关于这个密钥本身:
- 密钥不随任何版本发布。仓库里只有它的单向校验值(SHA-256),无法据此反推出密钥;密钥只在作者本地留存
- 请勿把密钥随你的改动一起发布,否则下个版本会更换密钥,泄露出去的那份随即失效
- 它是「先问一声」的软性约束,不是密码学屏障:本项目源码公开,完整性校验本身也拦不住有心人,它筛掉的是「随手改一改就发布」,而不是有备而来的攻击者。需要硬保证的场景应当改用代码签名
本节的完整条款见 DISCLAIMER.md 第九节「二次修改(二改)与完整性校验」。
首次运行后会在程序同目录生成 cleaner.config.json,记录勾选状态、自动清理开关与免责声明的同意状态。删除该文件即可恢复默认设置,此时下次启动会重新弹出免责声明。
除图形界面外,程序提供若干命令行开关,便于批量执行与问题排查:
| 参数 | 用途 |
|---|---|
-SelfTest |
自检删除引擎与安全校验,仅在临时目录内操作,不触碰真实数据 |
-Console |
控制台模式,不显示界面;配合 -Auto 可直接按配置执行清理 |
-RenderTo <路径> |
将界面整体渲染为 PNG,用于比对视觉样式 |
-BenchPaint <帧数> |
连续重绘指定帧数并报告耗时,用于性能对比 |
-SnapTo <路径> |
走真实启动流程后截图,并额外输出一张滚动后的画面 |
-Config <路径> |
指定配置文件路径 |
-UnlockKey <密钥> |
二改授权:跳过脚本完整性校验(密钥不随仓库发布,见下文「二改与完整性校验」) |
-IntegritySeal |
维护用:重新计算并写回脚本自身的完整性指纹(改过脚本必须执行一次)。同样需要有效的二改授权密钥,否则拒绝封装并退出 4 |
示例:
# 自检(不修改任何真实数据)
powershell -ExecutionPolicy Bypass -File .\DiskCleaner.ps1 -SelfTest
# 控制台模式,按配置文件静默清理
powershell -ExecutionPolicy Bypass -File .\DiskCleaner.ps1 -Console -Auto| 文件 | 说明 |
|---|---|
DiskCleaner.ps1 |
主程序 |
RunCleaner.bat |
启动器,自动申请管理员权限 |
FAQ.md |
常见问题解答 |
开发日志.md |
更新日志,含各版本修复的缺陷说明 |
DISCLAIMER.md |
完整免责声明,使用前请阅读 |
LICENSE |
MIT 开源许可协议 |
cleaner.config.json |
运行时生成的配置(未纳入版本管理) |
本节为摘要,完整条款见
DISCLAIMER.md。
本工具执行的是永久删除,被删文件不进入回收站,无法通过常规手段恢复;其中「Windows.old」「系统升级残留目录」「系统还原点 / 卷影副本」「休眠文件」「Windows 组件清理 (DISM)」等项具有不可逆的系统级影响。
本项目保留的各历史版本(开发目录中按版本号留档的副本,以及 Releases 页面上的历史发布)仅作开发历程留档,均为过时版本、不在维护范围内,部分含已知缺陷;本声明的全部条款同样适用于它们,建议仅使用最新版本。详见 DISCLAIMER.md 第六节。
本工具按「现状」(AS IS)提供,不附带任何明示或默示担保。作者不对使用或无法使用本工具所导致的任何数据丢失、系统损坏、业务中断等直接或间接损失承担责任。请在清理前自行确认勾选项并做好重要数据备份,因误删造成的数据丢失需由使用者自行承担。
本工具由林中晨曦工作室(个人工作室)开发、署名并免费公开,未授权任何形式的有偿服务——任何以本工具或本工作室名义提供的付费清理、远程代删、代运维或「付费技术支持」,均与本工作室无关。详见 DISCLAIMER.md 第八节。
本工具内置脚本完整性校验,改动后会拦截启动。未经授权的二次修改与再分发与本工作室无关:修改版的发布者需自行承担全部后果,不得以本工作室名义发布,并应标明为非官方版本;解锁密钥仅限领取者本人使用、不得公开传播。如果你运行的副本标题栏出现红色「已绕过完整性校验」,说明它跳过了校验、内容未经核对,请先确认来源。详见 DISCLAIMER.md 第九节。