使用 DISM 或系统更新准备工具修复 Windows 更新错误

适用于:Windows 10(版本 1809 及更高版本)、Windows 8.1、Windows Server 2012 R2、Windows 7、Windows Server 2008 R2
原始 KB 编号: 947821

症状

如果存在损坏错误,则 Windows 更新和服务包可能会安装失败。 例如,如果系统文件损坏,则可能无法安装更新。 DISM 或系统更新准备工具可帮助你修复一些 Windows 损坏错误。

本文适用于支持代理和 IT 专业人员。 如果你是家庭用户,并且正在寻找有关修复 Windows 更新错误的详细信息,请参阅修复 Windows 更新错误

适用于 Windows 8.1、Windows 10 和 Windows Server 2012 R2 的解决方法

若要解决此问题,请使用收件箱部署映像服务和管理 (DISM) 工具。 然后,重新安装 Windows 更新和服务包。

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

  2. 键入以下命令,然后按 Enter 键。 命令操作可能需要几分钟才能完成。

    DISM.exe /Online /Cleanup-image /Restorehealth
    

    重要

    当运行此命令时,DISM 通过 Windows 更新提供修复损坏所需的文件。 但是,如果 Windows 更新客户端已断开,则会将正在运行的 Windows 安装用作修复来源,或者将来自网络共享或可移动媒体(例如 Windows DVD)的 Windows 并行文件夹用作文件来源。 为此,请改为运行以下命令:

    DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:C:\RepairSource\Windows /LimitAccess
    

    注意

    请使用修复来源的位置替换 C:\RepairSource\Windows 占位符。 有关使用 DISM 工具修复 Windows 的更多信息,请参考修复 Windows 映像

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

  4. 关闭命令提示符,然后再次运行“Windows 更新”

DISM 会创建一个日志文件 (%windir%/Logs/CBS/CBS.log),用于捕获此工具发现或修复的任何问题。 %windir% 是 Windows 的安装文件夹。 例如,%windir% 文件夹为 C:\Windows。

适用于 Windows 7 和 Windows Server 2008 R2 的解决方法

若要解决此问题,请使用系统更新准备工具。 然后,重新安装 Windows 更新和服务包。

  1. 下载系统更新准备工具。

    前往 Microsoft 更新目录,下载与你的计算机上运行的 Windows 版本对应的工具。 若要详细了解如何确定安装的 Windows 版本,请参阅确定计算机运行的是 32 位还是 64 位版本的 Windows

    注意

    由于该工具定期更新,因此我们建议您务必下载最新版本。 此工具并非以每种受支持的语言提供。 查看下面的链接,了解其是否以你的语言提供。

  2. 安装并运行该工具。

    1. 单击“下载中心”网页上的“下载”,然后执行下列操作之一:

      • 若要立即安装该工具,请选择“打开”或“运行”,然后按照屏幕上的说明操作。
      • 若要稍后安装该工具,请选择“保存”,然后将安装文件下载到计算机。 准备好安装该工具时,双击该文件。
    2. 在“Windows 更新独立安装程序”对话框中,选择“是”

      选择“是”可在 Windows 更新“独立安装程序”对话框中安装 Windows KB947821 的修补程序。

  3. 当安装该工具时,它会自动运行。 虽然运行时间通常不会超过15 分钟,但在某些计算机上可能会需要更长时间。 即使进度栏似乎已停止,但扫描仍在运行,因此不要单击“取消”

    “下载和安装更新”窗口显示正在安装的更新进度。

  4. 看到安装完后,选择“关闭”

    “下载并安装更新”窗口显示安装已完成。

  5. 重新安装之前尝试安装的更新和服务包。

要手动修复工具检测到但是未能修复的损坏错误,请参阅如何修复在 CheckSUR 日志文件中发现的错误

解决方案 - 直接从 Microsoft 更新目录中下载程序包

也可以尝试直接从 Microsoft 更新目录下载更新程序包,然后手动进行安装。

例如,在尝试通过 Windows 更新安装更新时,可能会遇到问题。 在这种情况下,你可以下载更新程序包并尝试手动安装更新。 为此,请按照下列步骤操作:

  1. 打开 KB3006137 的“Microsoft 更新目录”页面

  2. 在搜索结果中查找适用于你的操作系统的更新,然后选择“下载”按钮。

    Microsoft 更新目录选择“下载”按钮。

  3. 选择文件的链接以下载更新。

    Microsoft 更新目录选择文件下载链接。

  4. 下载过程完成后,选择“关闭”。 然后,你可以在指定位置找到包含更新程序包的文件夹。

  5. 打开文件夹,然后双击更新程序包安装更新。

如果 Windows 更新和服务包安装成功,则安装完成。 如果未能修复此问题,或系统更新准备工具找不到原因,请联系我们获得更多帮助

有关常见损坏错误的描述

下表列出了可能与 Windows 更新相关的错误代码,仅供参考:

代码 错误 说明
0x80070002 ERROR_FILE_NOT_FOUND 系统找不到指定的文件。
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 无法识别用于冻结的匹配组件

系统更新准备工具有哪些用途

验证资源的完整性

系统更新准备工具验证以下资源的完整性:

  • 位于以下目录中的文件:
    • %SYSTEMROOT%\Servicing\Packages
    • %SYSTEMROOT%\WinSxS\Manifests
  • 位于以下注册表子项下的注册表数据:
    • HKEY_LOCAL_MACHINE\Components
    • HKEY_LOCAL_MACHINE\Schema
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing

此列表可能随时更新。

当系统更新准备工具检测到不正确的清单、Cabinet 或注册表数据时,此工具可能会使用更正的数据替换不正确的数据。

日志记录

此系统更新准备工具会创建一个日志文件,用于捕获此工具发现或修复的任何问题。 日志文件位于以下位置:

  • %SYSTEMROOT%\Logs\CBS\CheckSUR.log
  • %SYSTEMROOT%\Logs\CBS\CheckSUR.persist.log

如何修复在 CheckSUR 日志文件中找到的错误

若要手动修复系统更新准备工具检测到但未修复的损坏错误,请按照以下步骤进行:

  1. 打开 %SYSTEMROOT%\Logs\CBS\CheckSUR.log。

    注意

    %SYSTEMROOT% 是一个环境变量,用于保存 Windows 的安装文件夹。 例如,通常 %SYSTEMROOT% 文件夹为 C:\Windows。

  2. 标识该工具无法修复的程序包。 例如,你可能会在日志文件中发现以下内容:

    Summary:
    
    Seconds executed: 264  
    Found 3 errors  
    CBS MUM Missing Total Count: 3  
    Unavailable repair files:  
    
    servicing\packages\Package_for_KB958690_sc_0~31bf3856ad364e35~amd64~~6.0.1.6.mum  
    ...
    

    在此情况下,受损的程序包是 KB958690。

  3. Microsoft 下载中心Microsoft 更新目录下载该程序包。

  4. 将程序包 (.msu) 复制到 %SYSTEMROOT%\CheckSUR\packages 目录。 默认情况下,此目录不存在,你需要创建该目录。

  5. 重新运行系统更新准备工具。

如果你是技术专业人员,请参阅如何修复在 CheckSUR.log 中找到的错误,以获取有关修复 CheckSUR.log 中的错误的更多选项。