WinSxS文件夹:在windows10和8.1中进行清理和压缩

时间:2020-01-09 10:46:30  来源:igfitidea点击:

在本文中,我们将讨论windows10和windows8.1中的 WinSxS文件夹,它不断增长的原因和清理方法。 C:\Windows\WinSxS目录是Windows组件的存储库。此目录包含安装和操作任何Windows角色或者功能所需的DLL、二进制文件和XML文件。安装Windows更新时(通常每月都会发生这种情况),更新组件的新版本将安装在系统中,而旧版本将保存到WinSxS文件夹中(需要提供兼容性,以便在卸载有问题的更新时能够回滚到组件的旧版本)。

随着时间的推移,WinSxS目录不断增加,其大小不受任何限制(尽管在实际操作中,Windows 10/8.1中WinSxS文件夹的大小很少超过15-20gb)。

在windows10和windows8中,减小WinSxS文件夹大小的最简单方法是删除系统更新后剩余组件的旧版本。为此,可以使用标准磁盘清理向导(cleanmgr.exe文件)或者DISM命令的特殊选项(见下文)。

提示。在Windows 7 SP 1中,只有在安装了单独的更新(KB 2852386)后,才能使用磁盘清理实用程序删除旧的更新文件。

如何在windows10/8.1中检查WinSxS文件夹的实际大小

WinSxS文件夹的另一个特点是其中有大量的 符号硬链接。硬链接是指向与原始文件完全相同的文件的指针。这意味着指针和源文件可以有不同的名称,并位于同一卷的不同目录中,但它们指向同一对象。文件管理器(包括Windows资源管理器)显示的WinSxS文件夹的大小有点夸张。事实上,在计算文件夹的大小时,它们会考虑目录中的硬链接。我们可以使用Sysinternals中的 du实用程序了解WinSxS文件夹的实际大小:

du -v c:\windows\winSXS

还可以使用DISM命令分析组件存储(WinSxS文件夹)的大小:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Deployment Image Servicing and Management tool
[==========================100.0%==========================]
Component Store (WinSxS) information:
Windows Explorer Reported Size of Component Store : 7.00 GB
Actual Size of Component Store : 6.86 GB
Shared with Windows : 4.58 GB
Backups and Disabled Features : 1.86 GB
Cache and Temporary Data : 419.85 MB
Date of Last Cleanup : 2018-08-02 03:15:12
Number of Reclaimable Packages : 1
Component Store Cleanup Recommended : Yes
The operation completed successfully.

如我们所见,在本例中,我可以将WinSxS目录的大小减少(1,86+0,42)Gb。

许多用户经常问:是否可以手动删除WinSxS文件夹中的文件?答案是明确的 !这些操作可能会损害Windows镜像的运行状况。虽然从WinSxS文件夹中删除文件的一些尝试可以成功,但由于此方法对系统有潜在的危险,因此不建议使用此方法。

让我们详细讨论一下在Windows10和8.1中清理WinSxS文件夹的最安全的方法。这些是:

  • 从组件存储中删除旧版本的组件(安装更新后保留);

  • Features on Demand–允许从磁盘中删除未使用的Windows功能;

  • WinSxS文件夹压缩–使用NTFS压缩缩小WinSxS目录大小的方法。

为了达到最佳效果,你可以同时使用这三种方法。

清理windows10/8.1中的组件存储(WinSxS文件夹)

在我看来,清除组件存储(WinSxS文件夹)的最快和最简单的方法是运行DISM命令:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

/StartComponentCleanup选项有一个添加的 /ResetBase选项,允许我们删除所有以前版本的组件(之后,我们将无法删除已安装的更新或者服务包, 卸载按钮将从 卸载更新控制面板项中消失)。命令如下所示:

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

我们也可以使用“磁盘清理”向导删除旧的更新文件:

以管理员身份运行cleanmgr命令;

选择磁盘,在下一个窗口中,点击“清理系统文件”按钮;

然后选择“ Windows update cleanup”选项。磁盘清理实用程序将显示通过删除旧的Windows更新文件可以释放多少空间。在我的示例中,这是324MB。单击“确定”开始清理。

除此之外,DISM任务调度器还执行一个特殊的任务清理选项,即DISM任务调度程序10. 此任务将删除超过30天的所有过期更新。此任务名为 StartComponentCleanup,位于\Microsoft\Windows\Service部分。

Windows的按需功能

在“Windows Server 2012中WinSxS文件夹的安全清理”一文中,我们研究了新选项 Features on Demand,它允许从WinSxS文件夹中删除未使用角色文件的二进制文件。

要从磁盘中删除未使用的角色,有一个特殊的PowerShell cmdlet- 卸载WindowsFeature

问题是在Windows 10和8.1中没有Uninstall WindowsFeature cmdlet。

我们只能使用DISM或者DISM PowerShell cmdlet来实现Features on Demand技术。此外,要知道,与Uninstall-WindowsFeature cmdlet相比,DISM命令不分析包依赖关系。因此,在使用DISM删除Windows包后,将只删除命令中指定的组件,并且所有依赖的包都将保留在系统中。这就是为什么在Windows Server 2012/R2中不应使用DISM从磁盘中删除角色文件的原因,因为有一种更方便、更有效的方法来执行此操作。

可以使用以下命令获取Windows 10/8.1镜像中可用功能的完整列表:

DISM.exe /Online /English /Get-Features /Format:Table