Windows操作系统作为优秀的操作系统,由开发操作系统的微软公司控制接口和设计,公开标准,因此,有大量商业公司在该操作系统上开发商业软件。 WinSxS是什么文件夹WinSxS(Side-by-Side)文件夹其实是微软为了解决 Windows 系统中的「DLL Hell」问题而创建的,「DLL Hell」简单一点来解释就是:如果某应用程序更改了一个动态链接库(DLL)文件,则会影响到使用同一 DLL 的应用程序关键功能的情况。 例如,应用程序 A 和 B 都调用同一个 DLL,而 A 需要的版本为 1.0.2,B 程序要用不同的版本,将其替换成了 1.0.3 版本。这样就势必会对应用 A 造成影响,要么出现兼容性问题,严重点甚至导致应用崩溃或蓝屏问题。 微软祭出WinSxS解决方案 从 Windows XP 系统开始,「组件存储」功能被正式启用,每个组件(包括 DLL、OCX 和 EXE)都会存储于这个被命名为 WinSxS 的目录中,这里会存放应用程序需要调用的不同版本 DLL,并根据需求加载正确的版本。 那问题又来了,一个应用程序如何知道它需要加载什么版本的 DLL 呢?这就需要「manifest」文件来发挥作用了,该文件包含了一些设置,用于告知操作系统在应用启动时如何处理,以及正确的 DLL 版本。 每个组件都带有唯一标识的名称,该名称可以包括:处理器架构、语言、版本和 ID,然后这些组件的特定版本被收集在一起,成为软件包,被 Windows Update 和 DISM 用来保持系统的最新状态。 WinSxS文件夹和硬链接硬链接在整个 Windows 操作系统中都有广泛使用,就 WinSxS 而言,这是「组件」驻留在系统中的唯一位置,而「组件存储」之外的所有其他文件实例都是硬链接到 WinSxS 文件夹中的。
当我们更新 Windows 系统时,如有新版本的「组件」发布,就会通过硬链接的方式将其映射到操作系统层面,而旧版本的「组件」依旧会保存在「组件存储」中,以确保可靠性(会取消硬链接),这样就可以在出问题时进行回滚。 为了证实这一点,我们可以来做一个小实验: 1在「开始」菜单中搜索?cmd?——找到「命令提示符」——选择「以管理员身份运行」 2例如,如果我要查看名为?audiosrv.dll?的系统文件的硬链接,就可以执行: fsutil hardlink list "C:\Windows\System32\audiosrv.dll" 由此就以看出其在 WinSxS 组件存储中的映射路径。 WinSxS的重要性WinSxS 组件存储的重要性不言而喻,它在支持自定义和更新 Windows 功能方面起着至关重要的作用,它可以帮助实现:
WinSxS文件夹大小Windows 系统的一大优势就在于它可以兼容一些较旧的硬件和应用程序,但这种兼容性是以占用磁盘空间和报错为代价的。而 WinSxS 组件存储中就包含了所有必要的文件,以维持住 PC 对硬件和软件的兼容性。 目测我系统中的 WinSxS 文件夹占用了 7GB 左右的磁盘空间,但由于「文件资源管理器」不考虑硬链接,这其实是一个虚值。
如何查看WinSxS文件夹的真实大小1在「开始」菜单中搜索?cmd?——找到「命令提示符」——选择「以管理员身份运行」 2执行以下命令进行查看: Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore 分析完成后,我们就可以看到「组件存储」的实际大小。
减小WinSxS文件夹大小的方法很多用户经常会问,能不能手动删除 WinSxS 文件夹中的文件?甚至有人问能不能删除 WinSxS 文件夹?答案是——绝对不行! 如果你以这种搞事情的方式来删除其中的文件,很可能会损坏 Windows 功能,轻一点可能会让 Windows Update 无法正确安装、卸载更新,即便你成功地从 WinSxS 文件夹中删除了文件,也不知道是否哪个应用程序就会闹出幺蛾子。 但是我们可以通过 Windows 内置的一些工具,以专业而优雅的方式来减小 WinSxS 文件夹的大小,以达到网友们所期望的清理、压缩和瘦身等效果。 方法1:使用「磁盘清理」工具1在「开始」菜单中搜索?磁盘清理?——找到并打开「磁盘清理」工具 2在下拉列表中选择系统盘——点击「确定」——在打开的工具界面中点击「清理系统文件」按钮 3勾选上所有对勾进行清理即可 方法2:移除一些不用的Windows功能把一些普通用户不常用的 Windows 功能,如:Print to PDF、Hyper-V、PowerShell 和Windows 沙盒等功能给干掉,同样可以达到给 WinSxS 瘦身的效果: 1使用?Windows + R?快捷键打开「运行」—— 执行?appwiz.cpl?打开添加删除程序
2点击左侧的「启用或关闭 Windows 功能」 3.取消勾选不用的功能——点击「确定」按钮 方法3:使用DISM进行组件清理其实从 Windows 8 开始,操作系统中就内置了一个自动执行 WinSxS 组件存储清理的任务计划。
当然我们也可以手动使用 DISM 命令进行组件清理: 1在「开始」菜单中搜索?cmd?——找到「命令提示符」——选择「以管理员身份运行」 2手动执行以下命令: DISM.exe /online /Cleanup-Image /StartComponentCleanup 使用?/Cleanup-Image?参数可以立即删除之前版本的组件,没有 30 天宽限期也没有一小时的超时限制。 DISM.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase 增加?/ResetBase?参数可以删除每个组件的所有被取代版本,也将无法卸载任何当前的更新。 Windows操作系统对硬件支持良好。 |
温馨提示:喜欢本站的话,请收藏一下本站!