修复Windows 更新损坏和安装失败
本文提供了高级手动方法,用于修复使用部署映像服务和管理(DISM)工具防止Windows 更新成功安装的问题。
注意
本文适用于支持代理和 IT 专业人员。 如果你是家庭用户,并且正在寻找有关修复 Windows 更新错误的详细信息,请参阅修复 Windows 更新错误。
原始 KB 编号:947821
常见损坏错误
如果存在损坏错误,则 Windows 更新可能会安装失败。 可以检查安装程序事件日志中是否存在错误。 下表列出了可能与 Windows 更新相关的错误代码,仅供参考:
代码 | 错误 | 说明 |
---|---|---|
0x80070002 | ERROR_FILE_NOT_FOUND | 系统找不到指定的文件。 |
0x800f0831 | CBS_E_STORE_CORRUPTION | CBS 商店已损坏。 |
0x8007000D | ERROR_INVALID_DATA | 数据无效。 |
0x800F081F | CBS_E_SOURCE_MISSING | 找不到此程序包或文件的源。 |
0x80073712 | ERROR_SXS_COMPONENT_STORE_CORRUPT | 组件存储处于不一致状态。 |
0x800736CC | ERROR_SXS_FILE_HASH_MISMATCH | 组件的文件与组件清单中的验证信息不匹配。 |
0x800705B9 | ERROR_XML_PARSE_ERROR | 无法分析所请求的 XML 数据。 |
0x80070246 | ERROR_ILLEGAL_CHARACTER | 遇到无效字符。 |
0x8007370D | ERROR_SXS_IDENTITY_PARSE_ERROR | 标识字符串格式错误。 |
0x8007370B | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME | 标识中的属性名不在有效范围内。 |
0x8007370A | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE | 标识中的属性值不在有效范围内。 |
0x80070057 | ERROR_INVALID_PARAMETER | 参数不正确。 |
0x800B0100 | TRUST_E_NOSIGNATURE | 主题中没有签名。 |
0x80092003 | CRYPT_E_FILE_ERROR | Windows Update 读取或写入某文件时出现错误。 |
0x800B0101 | CERT_E_EXPIRED | 根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内。 |
0x8007371B | ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE | 一个或多个要求的事务成员不存在。 |
0x80070490 | ERROR_NOT_FOUND | Windows 无法搜索新更新。 |
0x800f0984 | PSFX_E_MATCHING_BINARY_MISSING | 存在匹配组件目录,但缺少二进制文件 |
0x800f0986 | PSFX_E_APPLY_FORWARD_DELTA_FAILED | 应用正向增量失败 |
0x800f0982 | PSFX_E_MATCHING_COMPONENT_NOT_FOUND | 无法识别用于冻结的匹配组件 |
例如,如果系统文件损坏,则可能无法安装更新。 DISM 可能有助于修复某些 Windows 损坏错误。
有关 Windows 更新疑难解答方案的信息,请查看此页。
使用 DISM 修复Windows 更新损坏
注意
本节中提到的解决方案适用于新版 Windows 版本,例如 Windows 11、Windows 10、Windows Server 2016 或更高版本。
若要解决Windows 更新损坏并解决更新安装失败问题,请使用 DISM 工具。 然后,安装Windows 更新。
打开权限提升的命令提示符。 为此,请打开 “开始 ”菜单,键入 命令提示符,右键单击 命令提示符,然后选择“ 以管理员身份运行”。 如果系统提示输入管理员密码或确认,请键入密码,或选择“ 是”。
键入以下命令,然后按 Enter 键。 命令操作可能需要几分钟才能完成。
DISM.exe /Online /Cleanup-image /Restorehealth
重要
当连接到 Microsoft 更新服务器以提取丢失或损坏的文件时,DISM 修复效果最佳。 使用继续命令时,DISM 会获取修复Windows 更新的任何损坏所需的文件。 但是,如果计算机无法连接到Windows 更新,或者可以使用工作 Windows 安装作为修复源,或者可以使用网络上的 Windows 文件夹或 USB 或 DVD 中的文件。 请改用以下命令:
DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:\\<servername>\c$\winsxs /LimitAccess
注意
将服务器名称>替换为<用作修复源的计算机的计算机名。 修复源计算机必须运行相同的操作系统版本。 有关使用 DISM 工具修复 Windows 的更多信息,请参考修复 Windows 映像。 如果扫描结果为“还原操作成功完成”,请转到下一步。 否则,请尝试 分析CBS.log文件 并修复错误。
键入
sfc /scannow
命令,然后按 Enter。 命令操作可能需要几分钟才能完成。关闭命令提示符,然后再次运行“Windows 更新”。
DISM 创建一个日志文件(%windir%\Logs\CBS\CBS.log),用于捕获工具找到或修复的任何问题。 %windir% 是安装 Windows 的文件夹。 例如,%windir% 文件夹为 C:\Windows。
DISM 修复的工作原理是什么?
DISM 是一种命令行工具,用于服务和修复 Windows 映像,包括 Windows 恢复环境、Windows 安装程序和 Windows PE(WinPE)。 它还可用于修复计算机上的本地 Windows 映像。
为了更好地了解,DISM 工具检查完整性的资源摘要如下:
- 位于以下目录中的文件:
- %SYSTEMROOT%\Servicing\Packages
- %SYSTEMROOT%\WinSxS\Manifests
- 位于以下注册表子项下的注册表数据:
- HKEY_LOCAL_MACHINE\Components
- HKEY_LOCAL_MACHINE\Schema
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing
此列表可能随时更新。 当 DISM 检测到不正确的清单、内阁或注册表数据时,它可能会将不正确的数据替换为更正的版本。
Logging
DISM 工具创建一个日志文件,用于捕获工具找到或修复的任何问题。 日志文件位于以下位置:
- %SYSTEMROOT%\Logs\CBS\CBS.log
- %SYSTEMROOT%\Logs\CBS\CBS.persist.log
使用 DISM 实用工具手动修复 CBS 损坏的高级指南
步骤 1:分析CBS.log文件
运行 DISM 命令后,转到 %WinDir%\Logs\CBS\CBS.log 以查看结果。 日志文件提供扫描的摘要和找到的任何错误的详细信息。
下面是日志摘要的示例:
Checking System Update Readiness.
(p) CSI Payload Corrupt (n) amd64_microsoft-windows-a..modernappmanagement_31bf3856ad364e35_10.0.19045.3636_none_23b3b3ece690d77b\EnterpriseModernAppMgmtCSP.dll
(p) CBS MUM Missing (n) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291
(p) CSI Manifest Corrupt (w) (Fixed) wow64_microsoft-windows-audio-mmecore-acm_31bf3856ad364e35_10.0.19045.1_none_a12b40f4b4c7b751
(p) CSI Manifest Corrupt (n) wow64_microsoft-windows-audio-volumecontrol_31bf3856ad364e35_10.0.19045.3636_none_4514b27cf12f35d5
Summary:
Operation: Detect and Repair
Operation result: 0x800f081f
Last Successful Step: Remove staged packages completes.
Total Detected Corruption: 2
CBS Manifest Corruption: 2
CBS Metadata Corruption: 0
CSI Manifest Corruption: 0
CSI Metadata Corruption: 0
CSI Payload Corruption: 0
Total Repaired Corruption: 1
CBS Manifest Repaired: 1
CSI Manifest Repaired: 0
CSI Payload Repaired: 0
CSI Store Metadata refreshed: False
Staged Packages:
CBS Staged packages: 0
CBS Staged packages removed: 0
注意
CSI 有效负载损坏:这表示有效负载文件 EnterpriseModernAppMgmtCSP.dll 已损坏。
CBS MUM 缺失:包中缺少必需的 MUM 文件(Microsoft-Windows-Client-Features-Package)。
CSI 清单损坏:清单损坏有两个实例。 一个是固定的(wow64_microsoft-windows-audio-mmecore-acm),另一个(wow64_microsoft-windows-audio-volumecontrol)仍然损坏。
步骤 2:下载缺少的文件
标识缺失或损坏的文件。
查看CBS.log文件以标识缺失或损坏的文件。 例如:
(p) CSI Payload Corrupt (n) amd64_microsoft-windows-a..modernappmanagement_31bf3856ad364e35_10.0.19045.3636_none_23b3b3ece690d77b\EnterpriseModernAppMgmtCSP.dll (p) CBS MUM Missing (n) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291 (p) CSI Manifest Corrupt (n) wow64_microsoft-windows-audio-volumecontrol_31bf3856ad364e35_10.0.19045.3636_none_4514b27cf12f35d5
确定包含缺失文件的更新。
在日志条目中,标识文件路径中的更新内部版本修订 (UBR) 编号:
- 在 EnterpriseModernAppMgmtCSP.dll 文件中,UBR 编号为
10.0.19045.3636
. - 在包中
Microsoft-Windows-Client-Features-Package
,UBR 编号为10.0.19045.4291
.
- 在 EnterpriseModernAppMgmtCSP.dll 文件中,UBR 编号为
将 UBR 编号与 KB 编号匹配:
- 转到 你的版本的 Windows 更新历史记录页 (例如 Windows 10 版本 22H2)。
- 将 UBR 编号(
3636
或4291
)与列出的更新匹配,以查找 KB 编号。
例如:
- UBR
3636
可能与KB5031445相对应。 - UBR
4291
可能与KB5036892相对应。
按 KB 编号搜索并下载更新:
- 使用标识的知识库编号搜索Microsoft更新目录中的更新。
- 下载与每个 KB 编号关联的更新,以还原丢失或损坏的文件。
步骤 3:提取 .msu 和.cab文件
若要解决CBS.log文件中标识的损坏文件,请将缺失的文件提取到特定文件夹中。 按照以下步骤使用提供的 PowerShell 脚本提取.msu
和.cab
文件,然后将所需的文件复制到 C:\temp\Source 文件夹。
创建必要的文件夹。
运行以下命令以创建 C:\temp\Source 文件夹(如果不存在):
mkdir C:\temp\Source
使用脚本中的说明和脚本:提取 .msu 和.cab文件,通过提供文件的目标路径
.msu
来提取.msu
文件。
步骤 4:使用源文件修复损坏的文件
复制损坏的文件的正确版本。
将属于此更新 的所有损坏文件的正确版本复制到 C:\temp\Source 文件夹。 例如,运行以下命令:
Copy-Item "C:\path\extractedFiles\corruptedfile.dll" -Destination "C:\temp\Source"
对日志中标识的每个损坏的文件重复此过程,直到所有损坏的文件都复制到 C:\temp\Source 文件夹。
重新运行 DISM 命令。
以管理员身份打开命令提示符,并使用
/Source
选项运行以下 DISM 命令:DISM /Online /Cleanup-Image /RestoreHealth /Source:C:\temp\Source\ /LimitAccess
步骤 5:验证并确认
重新运行 DISM 命令。
重新运行以下 DISM 命令以验证问题是否已解决:
DISM /Online /Cleanup-Image /ScanHealth
检查 CBS.log 文件。
查看CBS.log文件,以确保没有剩余的错误。
DISM 命令输出示例
DISM 还原命令的输出提供有关检测到和修复的损坏的重要信息:
Checking System Update Readiness.
(p) CBS MUM Missing (n) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291
Repair failed: Missing replacement mum/cat pair.
(p) CBS MUM Missing (w) (Fixed) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4412
Summary:
Operation: Detect and Repair
Operation result: 0x800f081f
Last Successful Step: Remove staged packages completes.
Total Detected Corruption: 2
CBS Manifest Corruption: 2
CBS Metadata Corruption: 0
CSI Manifest Corruption: 0
CSI Metadata Corruption: 0
CSI Payload Corruption: 0
Total Repaired Corruption: 1
CBS Manifest Repaired: 1
CSI Manifest Repaired: 0
CSI Payload Repaired: 0
CSI Store Metadata refreshed: False
Staged Packages:
CBS Staged packages: 0
CBS Staged packages removed: 0
数据收集
如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。