在Windows Server 2015/Windows 10上修复Windows Update和DISM错误0x80073712

时间:2020-01-09 10:47:04  来源:igfitidea点击:

尝试在Windows Server 2015上安装安全更新时,我遇到错误代码" 0x80073712"。正如我稍后发现的,此错误与损坏的Windows组件存储有关。在本文中,我们将研究如何在Windows 10或者Windows Server 2015/2012 R2中修复组件存储以及如何还原Windows Update服务的正确操作。

尝试在Windows Update中安装更新时,出现错误:

Some update files are missing or have problems. We’ll try to download the update.
Error code: (0x80073712)

首先,我尝试按照"如何重置Windows Update设置?"一文中的建议重置Windows Update代理设置并清理SoftwareDistribution目录,但这没有帮助。

然后使用

dism /online /get-packages

命令,我检查了所有系统更新是否都处于"已安装"状态。

如果任何更新的状态为"正在安装挂起",则可以使用此DISM命令(使用"程序包标识"字符串)正确删除它们:

DISM.exe /Online /Remove-Package /PackageName:Package_for_KB4520724~31bf3856ad364e35~amd64~~14393.3320.1.1 /quiet /norestart

我花了很长时间才找到解决此Windows Update错误的方法,在Windows Server 2015上安装.Net Framework 3.5. 时这个报错提供了一些关键线索:

在指定服务器上添加或删除功能的请求失败。安装一个或多个角色、角色服务或功能失败。组件存储已损坏。错误:0x80073712。
The request to add or remove features on the specified server failed. Installation of one or more roles, role services or features failed. The component store has been corrupted. Error: 0x80073712.

同时,我们可以在CBS.log(%WinDir%\ Logs\CBS\CBS.log)中找到以下错误:

[HRESULT = 0x80073712 - ERROR_SXS_COMPONENT_STORE_CORRUPT]

如我们所见,计算机上的组件存储由于某种原因已损坏。因此,Windows Update无法从安装更新所需的CBS(基于组件的服务)列表中获取数据。我们可以使用内置的DISM功能恢复组件存储。

在最简单的情况下,我们将不需要Windows安装镜像(磁盘)来恢复组件存储。然后,系统将使用本地磁盘和Windows Update网站上的源组件存储文件进行恢复(不能使用本地WSUS服务器恢复组件存储)。

首先,使用以下命令检查组件存储状态:

dism /online /cleanup-image /checkhealth

如果在分析之后看到组件存储是可修复的消息,则可以尝试使用以下命令恢复组件存储:

dism /online /cleanup-image /restorehealth

在某些情况下,这样做就足够了。但是在我的情况下,DISM返回了此错误:

Error: 0x800f0906
The source files could not be downloaded.

在这种情况下,要恢复Windows,我们需要带有Windows发行版的安装盘。假设我们已经安装了Windows Server安装ISO文件。然后在已安装的镜像(磁盘)上的install.wim文件中检查当前Windows版本的列表:

dism /Get-WimInfo /WimFile:e:\sources\install.wim

我已经安装了Windows Server 2015 Standard(Desktop Experience),因此我将在以下命令中使用其索引(2):

dism /online /cleanup-image /restorehealth /source:e:\sources\install.wim:2 /LimitAccess

再次检查组件存储的状态:

Dism /Online /Cleanup-Image /CheckHealth

DISM应该返回:

No component store corruption detected

恢复组件存储后,请重新启动Windows并确保Windows更新