如果您曾扫描 C 盘以查找占用大量空间的文件或文件夹,一定见过一个名为“WinSxS”的大得惊人的文件夹。如果您存储空间不足,它可能是一个诱人的清理目标,但不要这样做!除非您先了解它是什么以及本指南中如何正确清理它。
通常,WinSxS 文件夹托管所有组件存储文件,将占用 C 盘内 8GB 到 12GB 不等的空间。Windows 组件存储包含所有与更新 Windows 和系统应用程序/服务相关的文件。它确保您始终拥有用于恢复和稳定性的关键系统数据备份。
在必要时,这些组件存储文件用于执行诸如在启动失败或损坏时恢复系统、回滚驱动程序和 Windows 更新、为服务器管理器添加角色、运行使用并行程序集的程序等操作。
以下是一些存储在此处以维持系统稳定性的常见数据类型:
Windows 更新安装文件,以便日后回滚。这也包括版本升级,因此您可以在升级后返回到 Windows 10。
以前版本的驱动程序,以便在出现问题时回滚。
基本 Windows 系统文件的副本,用于修复损坏的文件,例如当您运行 SFC/Scannow 命令时。
.NET Framework(其所有已安装版本)的更新文件存储在此处。
额外的语言包将其组件保存于此,如手写识别引擎、字体组件、语音等。
可选功能(如旧版 Windows 应用程序或虚拟化功能 Hyper-V 和 WSL)在激活时会向 WinSxS 文件夹添加文件。
随着您使用电脑,越来越多的数据累积在 WinSxS 文件夹中,使其体积增大。然而,随着新更新的到来,其中的数据会随着时间的推移而过时。虽然 Windows 会不时对此文件夹进行基本清理,但在活跃的系统上往往会失败。这就是为什么您应该不时清理它以释放空间。
在我们清理之前,了解正确的 WinSxS 文件夹大小以查看是否需要清理是很重要的。您可能会想,找出 WinSxS 文件夹的大小有什么难的?毕竟,您可以进入“C:\Windows”,右键单击 WinSxS 文件夹,然后选择“属性”来查看文件夹大小。
但事实是,那不是真实的大小。
在组件存储中,许多文件使用一种称为硬链接(Hard Linking)的技术。此硬链接功能允许多个文件访问同一位置,而无需创建该位置或数据的副本。因此,当您尝试使用传统方法测量 WinSxS 文件夹的大小时,它会认为有多个相同文件的副本占用了空间,并会在最终大小中反映出这种差异。
要找到组件存储的实际大小,您需要通过 PowerShell 使用部署映像服务和管理 (DISM) 工具。
在 Windows 搜索中输入“powershell”,右键单击 Windows PowerShell,然后选择“以管理员身份运行”。
在 PowerShell 中,运行以下命令:
dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
一旦您执行该命令,Windows 将扫描组件存储并生成空间使用情况的细分。我们要找的是组件存储的实际大小。在我的情况下,组件存储的实际大小是 9.98GB。Windows 还会告诉您是否建议清理组件存储。
如果 Windows 建议清理组件存储,您可以使用另一个命令来完成。如果没有建议,则意味着 Windows 已经完成了清理,您无需做任何事情(除非您想要完全重置)。
再次以管理员权限打开 PowerShell,并执行以下命令来清理 WinSxS 文件夹:
dism.exe /online /Cleanup-Image /StartComponentCleanup
上述操作将启动清理过程。清理组件存储可能需要一些时间。完成后,关闭 PowerShell 窗口并重启系统。在我的情况下,它清理了大约 3.3 GB。
还有另一个更“彻底”的清理命令用于清理 WinSxS 文件夹。它将完全删除所有更新组件,并将当前系统文件存储为备份文件。虽然这将大大减小 WinSxS 文件夹的大小,但也会移除您在当前设置出现问题时回滚系统更改、运行恢复工具和修复系统损坏的能力。
如果您想在 Windows 中完全重置 WinSxS 文件夹,请在 PowerShell 中运行以下命令:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
您应该每隔几个月检查一次 WinSxS 文件夹的大小;Windows 通常无法自动清理它,因为运行清理任务的要求很严格。如果您因为存储空间不足而清理 WinSxS 文件夹,请务必查看释放 C 盘空间的方法,或者在不删除任何内容的情况下获取更多空间。