总结
如果Windows 更新代理程序启动但无法完成其启动序列,则会发生Windows 更新错误0x80240439(WU_E_NOT_INITIALIZED)。 本文介绍此错误的症状,并提供分步说明来帮助解决此错误。
症状
你安装了Windows更新,但安装失败,并显示错误代码0x80240439。
若要获取详细信息,请执行以下步骤:
-
检查 %windir%\Logs\WindowsUpdate\WindowsUpdate.log 文件以获取类似于以下示例的条目:
Agent -- WARNING: WU client failed Searching for update with error 0x80240439 Agent -- WARNING: Exit code = 0x80240439 -
若要检查Windows 更新服务的状态,请打开Windows PowerShell 命令提示符,然后运行以下 cmdlet:
Get-Service wuauserv | Select-Object Name, Status, StartType Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" -ErrorAction SilentlyContinue
原因
如果Windows 更新服务启动但无法完成其启动序列,则会发生此错误。 以下任何条件都可能导致此问题:
- Windows 更新代理数据存储已损坏。
- Windows 更新注册表配置已损坏或不完整。
- %windir%\SoftwareDistribution 文件夹中的状态文件已损坏。
- 系统策略或组策略设置阻止代理启动。
- 最近的Windows 更新重置未完成重新初始化过程。
解决方案
Important
在解决此问题之前,请备份操作系统的磁盘。 有关虚拟机(VM)此过程的信息,请参阅 “关于 Azure 虚拟机还原”。
步骤 1:重置Windows 更新代理
若要重置Windows 更新代理,请执行以下步骤:
-
打开管理命令提示符窗口,并运行以下命令:
net stop wuauserv net stop bits net stop cryptSvc ren %windir%\SoftwareDistribution SoftwareDistribution.old ren %windir%\System32\catroot2 catroot2.old net start cryptSvc net start bits net start wuauserv注释
- 如果必须多次运行这些命令,请在每次后续运行之前删除现有的 SoftwareDistribution.old 和 catroot2.old 文件夹。
- 此命令序列停止Windows 更新服务,清除数据存储,然后重启服务。
-
命令运行完成后,请重试安装更新。 如果更新仍未安装,请转到步骤 2。
步骤 2:重新注册Windows 更新组件
若要重新注册Windows 更新代理所需的 DLL,请在命令提示符处运行以下命令:
regsvr32 /s atl.dll
regsvr32 /s urlmon.dll
regsvr32 /s mshtml.dll
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s jscript.dll
regsvr32 /s vbscript.dll
regsvr32 /s scrrun.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml3.dll
regsvr32 /s msxml6.dll
regsvr32 /s actxprxy.dll
regsvr32 /s softpub.dll
regsvr32 /s wintrust.dll
regsvr32 /s dssenh.dll
regsvr32 /s rsaenh.dll
regsvr32 /s cryptdlg.dll
regsvr32 /s oleaut32.dll
regsvr32 /s ole32.dll
regsvr32 /s shell32.dll
regsvr32 /s initpki.dll
regsvr32 /s wuapi.dll
regsvr32 /s wuaueng1.dll
regsvr32 /s wups.dll
regsvr32 /s wups2.dll
regsvr32 /s qmgr.dll
regsvr32 /s qmgrprxy.dll
regsvr32 /s wucltux.dll
regsvr32 /s muweb.dll
regsvr32 /s wuwebv.dll
注释
在运行低于Windows 10的Windows版本的计算机上,可能还需要重新注册以下 DLL:
regsvr32 /s wuaueng.dll
regsvr32 /s wucltui.dll
regsvr32 /s wuweb.dll
regsvr32 /s gpkcsp.dll
regsvr32 /s sccbase.dll
regsvr32 /s slbcsp.dll
命令完成运行后,重新启动计算机。 然后,重试安装更新。 如果更新仍未安装,请转到步骤 3。
步骤 3:验证组策略设置
若要生成组策略报告,请在命令提示符处运行以下命令:
gpresult /h gpresult.html
在报告中,查看可能阻止初始化的策略,请检查计算机配置>管理模板>Windows 组件>Windows 更新。 如果找到此类策略,请重新配置或禁用它们。
如果进行更改,请运行以下命令:
gpupdate /force
重新启动计算机,然后重试安装更新。 如果更新仍未安装,请执行下列操作之一:
- 如果受影响的计算机是 VM,请转到步骤 4。
- 否则,请转到 步骤 5。
步骤 4:使用“运行”命令重置工具(Azure)
如果前面的步骤无法解决Azure VM 上的问题,请尝试 Azure VM Windows 更新重置工具。 可以使用 Operations>Run 命令直接从 VM 的Azure门户页运行该工具。 使用此方法时,无需登录到 VM。
此工具重置Windows 更新服务堆栈。 重置可以在更新代理中清除与内存相关的锁状态。
运行该工具后,请重试安装更新。 如果它仍然未安装,请转到步骤 5。
步骤 5:检查更新服务配置
如果使用 Windows Server Update Services (WSUS) 或类似的服务来管理更新,请执行以下步骤:
- 验证 VM 是否可以连接到 WSUS 服务器 URL。
- 确保防火墙和 NSG 规则(用于 VM)允许到 WSUS 服务器或 Windows 更新 终结点的出站连接。
- 如果使用Azure 更新管理器,请验证Azure Monitor代理(AMA)或Log Analytics代理(MMA)是否正常。 要检查的特定代理取决于配置。
- 请重试安装更新。 如果更新仍未安装,请联系Microsoft 支持部门以获取帮助。