修复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 更新。

  1. 打开权限提升的命令提示符。 为此,请打开 “开始 ”菜单,键入 命令提示符,右键单击 命令提示符,然后选择“ 以管理员身份运行”。 如果系统提示输入管理员密码或确认,请键入密码,或选择“ ”。

  2. 键入以下命令,然后按 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文件 并修复错误。

  3. 键入 sfc /scannow 命令,然后按 Enter。 命令操作可能需要几分钟才能完成。

  4. 关闭命令提示符,然后再次运行“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:下载缺少的文件

  1. 标识缺失或损坏的文件。

    查看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
    
  2. 确定包含缺失文件的更新。

    在日志条目中,标识文件路径中的更新内部版本修订 (UBR) 编号:

    • EnterpriseModernAppMgmtCSP.dll 文件中,UBR 编号为 10.0.19045.3636.
    • 在包中 Microsoft-Windows-Client-Features-Package ,UBR 编号为 10.0.19045.4291.
  3. 将 UBR 编号与 KB 编号匹配:

    1. 转到 你的版本的 Windows 更新历史记录页 (例如 Windows 10 版本 22H2)。
    2. 将 UBR 编号(36364291)与列出的更新匹配,以查找 KB 编号。

    例如:

    • UBR 3636 可能与KB5031445相对应。
    • UBR 4291 可能与KB5036892相对应。
  4. 按 KB 编号搜索并下载更新:

    1. 使用标识的知识库编号搜索Microsoft更新目录中更新。
    2. 下载与每个 KB 编号关联的更新,以还原丢失或损坏的文件。

步骤 3:提取 .msu 和.cab文件

若要解决CBS.log文件中标识的损坏文件,请将缺失的文件提取到特定文件夹中。 按照以下步骤使用提供的 PowerShell 脚本提取.msu.cab文件,然后将所需的文件复制到 C:\temp\Source 文件夹。

  1. 创建必要的文件夹。

    运行以下命令以创建 C:\temp\Source 文件夹(如果不存在):

    mkdir C:\temp\Source
    
  2. 使用脚本中的说明和脚本:提取 .msu 和.cab文件,通过提供文件的目标路径.msu来提取.msu文件。

步骤 4:使用源文件修复损坏的文件

  1. 复制损坏的文件的正确版本。

    将属于此更新 的所有损坏文件的正确版本复制到 C:\temp\Source 文件夹。 例如,运行以下命令:

    Copy-Item "C:\path\extractedFiles\corruptedfile.dll" -Destination "C:\temp\Source"
    

    对日志中标识的每个损坏的文件重复此过程,直到所有损坏的文件都复制到 C:\temp\Source 文件夹。

  2. 重新运行 DISM 命令。

    以管理员身份打开命令提示符,并使用 /Source 选项运行以下 DISM 命令:

    DISM /Online /Cleanup-Image /RestoreHealth /Source:C:\temp\Source\ /LimitAccess
    

步骤 5:验证并确认

  1. 重新运行 DISM 命令。

    重新运行以下 DISM 命令以验证问题是否已解决:

    DISM /Online /Cleanup-Image /ScanHealth
    
  2. 检查 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 针对与部署相关的问题收集信息中所述的步骤收集信息。