在Windows Server 2015/Windows 10上修复Windows Update和DISM错误0x80073712
尝试在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更新