当前位置:首页|资讯

释放C盘空间之重置Windows自动更新

作者:Morpheus23发布时间:2024-10-07

Windows有个问题,即随着使用时间的增加,C盘剩余空间会越来越小,直到变红,装满,无法使用,必须重装。所以“固态硬盘是否需要分区”的问题,我会回答系统所在固态需要分区,分一个足够大的C盘作为系统盘。当系统出现问题,或者使用时间过长导致没有剩余空间时,可以把C盘格式化,重装系统,可以保留其它盘符里的文件。如果只有一个C盘,格式化就会丢失所有文件。

C盘越来越小的“主要”原因有这么几个:

1 各种软件喜欢往C盘里拉屎。ProgramData,Appdata是重灾区。虽然你的软件安装在其它盘符,它们也可能会往这两个文件夹里写入数据。而且当你卸载软件时,这些文件不会被清理。解决方法是,软件用之前想好自己是否需要,非必要软件不要安装,已经装了想卸载清理,那就要有点技术了,去这两个文件夹里慢慢找,而且有删错的风险。

2 显卡驱动更新。如果你更新显卡驱动每次都是覆盖安装,驱动占用的空间会越来越大,因为旧的驱动不会被删除。使用磁盘清理实用程序清理驱动包,会释放一部分,但不会全部释放。解决办法是断网DDU重装驱动,只需要一次就能清理掉之前所有的旧驱动。操作流程简单来说是,提前准备好官网最新驱动的安装包和DDU,断网(关闭wifi/拔掉网线),进入安全模式,管理员权限打开DDU,设置(把驱动组件都勾上,保留配置不勾,清理显示器驱动和vulkan勾上,其它自己考虑),选择显卡,清理并重启(第一项),重启后安装最新的显卡驱动,装完重启(即使它没有让你重启),设置驱动(特别是分辨率和刷新率),安装显示器驱动(如果有)。

3 Windows自动更新。下载缓存在Windows/softwaredistribution/download。softwaredistribution只是下载缓存,winsxs才是重点。winsxs里面存放的是各个版本的Windows组件。每次自动更新,新的组件就会存放在这里,与旧的共存。每次大更新,Windows自动更新都会往winsxs里面拉一坨,正所谓:

一坨复一坨,更新何其多,系统常更新,winsxs成蹉跎。

清理winsxs的方法后面会讲。

4 休眠文件。hiberfil.sys,这个文件在C盘根目录,需要同时设置显示隐藏文件和显示系统文件才会看到。如果你不用休眠功能,可以在powershell(管理员模式)执行powercfg -h off。这会直接移除hiberfil.sys,并使电源设置里 快速启动和休眠 消失。快速启动就是关机≈休眠。

5 虚拟内存。pagefile.sys,也在C盘根目录。可以通过改变虚拟内存在C盘的占用量以及分配方式,以减小这个文件的大小。千万不要完全禁用虚拟内存。

6 windows.old。Windows的大版本更新会把旧的Windows打包成windows.old,不能直接删除。用磁盘清理实用程序可以删掉它。清理之后不能退回旧版Windows。

本文重点讲一下Windows自动更新的重置方法,也就是删除Windows更新的下载缓存,以及清理winsxs文件夹的方法。

下面这些方法可以从上至下逐一进行,也可以根据需求挑选。

1 Windows更新清理

联网状态手动检查更新,保证所有更新(不包括可选)已经成功安装并已经重启过。控制面板,管理工具,磁盘清理,选择C盘,清理系统文件,选择C盘,里面有Windows更新清理的话,勾上它,其它根据自己的需求勾选。Windows更新清理通常耗时较长,需要等待很久。

2 Windows更新下载缓存

位置在:Windows/softwaredistribution/download。这个文件夹在安全模式是可以直接删除的,也可以在正常模式,关闭Windows update服务并禁用,删除这个文件夹,再将该服务设置为手动,重启电脑。

3 清理winsxs

联网状态手动检查更新,保证所有更新(不包括可选)已经成功安装并已经重启过。重启之后不要进入Windows自动更新界面。

在powershell(管理员模式)执行:

Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

等待完成。重启电脑。

StartComponentCleanup这条指令,即使你什么都不做,Windows也会定期自动执行,前提是没有什么第三方软件“优化”过系统。这个任务是在任务计划中的,但它对最近的更新不会清理,会有30天的缓冲时间,方便你卸载更新。

使用dism手动执行则是这样的:“在 Windows 10 或更高版本的运行版本上使用 Dism.exe 的 /StartComponentCleanup 参数可提供类似于在任务计划程序上运行 StartComponentCleanup 的结果,除了早期版本的更新组件将立即删除(没有 30 天的宽限期),且将没有 1 小时的超时限制。”

如果加上/ResetBase,则是:“在 Windows 10 或更高版本的运行版本中,将 /ResetBase 参数和 DISM.exe 的 /StartComponentCleanup 参数一起使用,将删除组件存储区中每个组件的所有替换版本。”

只能说微软官网并没有说明白加上/ResetBase究竟多做了什么。这里还有一些说明:“/StartComponentCleanup清理被取代的组件并减小组件存储的大小。 使用 /ResetBase 重置被取代组件的基础,这可以进一步减少组件存储大小。 使用 /ResetBase 选项运行 /StartComponentCleanup 后,将无法卸载已安装的 Windows 更新。 使用 /Defer 和 /ResetBase 将长时间运行的清理操作推迟到下一次自动维护。”

我也不知道所谓的“基础”是什么东西。

如果查阅过/ResetBase相关资料的读者可能知道注册表有个disableresetbase的键,虽然有很多人提到要把这个关掉,才能正确使用resetbase,但微软官网没有提到过这个操作。个人不建议修改这项注册表。

4 完全重置Windows更新

进入安全模式,删除Windows/softwaredistribution下面的所有内容,删除C:\ProgramData\USOPrivate\UpdateStore\store.db和C:\ProgramData\USOShared\Logs\System下面所有文件,C:\ProgramData\USOShared\Logs\User下面所有文件。重启。

此时Windows更新的所有更新历史记录和缓存都会被删除。已经装的补丁是正常安装的,不会被删除。

其中只删除softwaredistribution下面的文件,更新历史会减少一部分,留下一部分,同时删除store.db,才会完全清空更新历史。

这一条通常没有意义,非必要不要操作,释放不了多少空间。

执行过1 3 4步骤后,已经安装的更新不能被卸载,无法退回旧版本。

这些步骤重点清理的是softwaredistribution和winsxs,它们占用多少空间,清理完占用多少空间,可以自行对比,每个人情况不同,我不能说这些步骤能释放多少空间。

严格来说,除了步骤1,其它操作都是有风险的。由此造成的日后更新安装失败,某些系统组件不能使用,责任由操作者自行承担。觉得风险难以承受,建议备份文件,格式化系统盘重装系统,这个释放的空间最多。





Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1