<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/2134.htm</link>
<title><![CDATA[HOWTO: 修复 Windows 系统文件和组件存储]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Windows Client]]></category>
<pubDate>Mon, 30 Dec 2024 09:02:10 +0000</pubDate> 
<guid>https://maytide.net/read.php/2134.htm</guid> 
<description>
<![CDATA[ 
	<p><img alt="troubleshooting" src="http://goxia.maytide.net/ftpup/2016/a2734efd2a17_D06F/troubleshooting_thumb.png"></p>&nbsp;&nbsp;<p><strong><font color="#fd3f0d" size="4">HOWTO: 修复 Windows 系统文件和组件存储</font></strong></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 运行一段时间可能因为意外关机、系统崩溃，或不兼容的软件或驱动更新，又或者是第三方优化工具的误操作，导致 Windows 系统文件和组件存储出现错误，那我们的系统环境就会出现一些莫名其妙的异常故障现象，或发生性能缓慢的问题，所以定期检查修复是非常有必要的运维措施，那么我们该如何检查修复 Windows 系统文件和组件存储呢？！</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://goxia.maytide.net" target="_blank">gOxiA</a> 今天要分享的话题相对轻松，也更容易理解和掌握！首先我们先了解一下什么是系统文件和组件存储。系统文件即 Windows 操作系统自身的一些关键文件，它们包含了动态链接库文件（DLL）；可执行文件（EXE）；驱动文件（SYS）；还有一些配置文件，如：注册表和启动相关文件；其他的还会有字体和主题文件这样的 Windows 应用资源文件，以及安全策略和网络组件文件。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组件存储即 WinSxS 文件夹中的内容，它是系统文件的基石（备份库），包含了 Windows 所有核心组件的多个版本，用于支持系统文件的兼容性和回滚功能。每个组件都有对应的清单文件，记录了它们之间依赖关系和文件属性。文件中还包含文件的哈希值和数字签名，用于验证文件的完整性。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统文件和组件存储的关系是当进行系统文件扫描和修复时，都会从组件存储中进行提取。所以当我们执行系统文件修复失败时，就要先去执行和完整组件存储的修复。两者都会生成日志，并存储在“C:\Windows\Logs\DISM\dism.log”文件中，当需要进行相关排错时我们可以利用上这个日志文件。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来，我们来了解如何修复系统文件和组件存储。对于系统文件，我们可以使用 SFC 命令，它内置于我们的系统中，需要管理员权限才能正常实行，具体的命令为：</p>&nbsp;&nbsp;<p><div class="code">sfc /scannow</div></p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/sfc-scannow.png"><img width="634" height="396" title="sfc-scannow" style="display: inline; background-image: none;" alt="sfc-scannow" src="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/sfc-scannow_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SFC 通过调用 Windows Resource Protection（WRP）技术来识别是否有核心文件被删除、损坏或修改。这个技术其实可以追溯到 Windows 98 时代的系统文件保护（System File Protection, SFP），再此之前 Windows 系统极易受到篡改……那会也是众多杀毒软件和专杀工具盛行的时期，再此之后 Windows 2000 和 XP 引入了 Windows 文件保护（Windows File Protection, WFP），到 Windows Vista 开始诞生了 WRP 并一路完善增强至今，使 Windows 越来越安全越来越稳定。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK，回归正题！如果执行后提示无法修复，那么我们就要使用 DISM 命令修复组件存储，首先我们可以先执行一次组件存储扫描，为此执行如下命令：</p>&nbsp;&nbsp;<p><div class="code">dism /online /cleanup-image /scanhealth</div></p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-scanhealth.png"><img width="634" height="140" title="dism-scanhealth" style="display: inline; background-image: none;" alt="dism-scanhealth" src="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-scanhealth_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 扫描组件存储后一旦发现有异常，我们就要执行修复，为此我们可以使用 /restorehealth 参数，即：</p>&nbsp;&nbsp;<p><div class="code">dism /online /cleanup-image /restorehealth</div></p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-restorehealth.png"><img width="634" height="204" title="dism-restorehealth" style="display: inline; background-image: none;" alt="dism-restorehealth" src="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-restorehealth_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在执行 restorehealth 进行修复时会自动连接网络从微软官方 Update 及相关文件的资源网站下载正确的文件，如果出现网络问题则会影响修复，并提示失败。此时我们就需要手动指定稳定可靠的源，这个源可以是一个 Windows 实例，或者直接 Mount 一个 WIM 到目录进行引用，如果觉得麻烦，也可以直接引用一个 WIM。但需要确保引用的源与当前 Windows 实例的版本一致。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面 gOxiA 将引用一个 WIM 文件进行组件的修复，命令行如下：</p>&nbsp;&nbsp;<p><div class="code">dism /online /cleanup-image /restorehealth /source:wim:\f:\sources\install.wm /limitaccess</div></p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-restorehealth-succeed.png"><img width="634" height="148" title="dism-restorehealth-succeed" style="display: inline; background-image: none;" alt="dism-restorehealth-succeed" src="http://goxia.maytide.net/ftpup/2018/444bd804e644_DFFA/dism-restorehealth-succeed_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果版本一致，并且源无损坏等异常，则能够修复成功，这样一来我们就不必通过重新安装操作系统来解决问题。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后，友情提示切勿使用第三方优化工具去执行清理 WinSxS 目录实现所谓的存储优化，它只会带来隐患！！！</p>
]]>
</description>
</item>
</channel>
</rss>