排查Windows 更新问题

适用于:Windows 10

试用虚拟代理 - 它可以帮助你快速识别和修复常见的Windows 更新问题

如果在使用Windows 更新时遇到问题,请从以下步骤开始:

  1. 运行内置Windows 更新疑难解答来修复常见问题。 导航到设置>更新和安全>故障排除>Windows 更新。

  2. 从 Microsoft 更新目录安装与 Windows 版本匹配的最新服务堆栈更新。 有关服务堆栈更新的详细信息,请参阅 服务堆栈更新

  3. 请确保安装最新的 Windows 更新、累积更新和汇总更新。 若要验证更新状态,请参阅系统的相应更新历史记录:

高级用户还可以参考Windows 更新生成的日志进行进一步调查。

使用Windows 更新时,可能会遇到以下情况。

为什么我提供了较旧的更新?

提供给设备的更新取决于多种因素。 以下是一些最常见的属性:

  • OS 内部版本
  • OS 分支
  • OS 区域设置
  • 操作系统体系结构
  • 设备更新管理配置

如果你提供的更新不是最新的可用更新,可能是因为你的设备由 WSUS 服务器管理,并且你得到了该服务器上的可用更新。 如果你的设备是部署组的一部分,则管理员可能会故意减缓更新的推出速度。 由于部署速度缓慢且以开始测量,因此所有设备都不会在同一天收到更新。

我的设备在扫描时被冻结。 为什么?

“设置”UI 与更新业务流程协调程序服务通信,而更新业务流程协调程序服务又与Windows 更新服务通信。 如果这些服务意外停止,则可能会看到此行为。 在这种情况下,请执行以下步骤:

  1. 关闭“设置”应用并重新打开它。

  2. 启动 Services.msc 并检查以下服务是否正在运行:

    • 更新状态业务流程协调程序
    • Windows 更新

其他更新未提供功能更新

运行 Windows 10 版本 1709 到 Windows 10 版本 1803 的设备配置为从 Windows 更新(包括适用于企业的 Windows 更新)进行更新,可以安装服务和定义更新,但从未提供过功能更新。

检查WindowsUpdate.log会显示以下错误:

YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           * START * Finding updates CallerId = Update;taskhostw  Id = 25
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           Online = Yes; Interactive = No; AllowCachedResults = No; Ignore download priority = No
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           ServiceID = {855E8A7C-ECB4-4CA3-B045-1DFA50104289} Third party service
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           Search Scope = {Current User}
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           Caller SID for Applicability: S-1-12-1-2933642503-1247987907-1399130510-4207851353
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            Got 855E8A7C-ECB4-4CA3-B045-1DFA50104289 redir Client/Server URL: https://fe3.delivery.mp.microsoft.com/ClientWebService/client.asmx""
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            Token Requested with 0 category IDs.
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            GetUserTickets: No user tickets found. Returning WU_E_NO_USERTOKEN.
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] Method failed [AuthTicketHelper::GetDeviceTickets:570]
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] Method failed [AuthTicketHelper::GetDeviceTickets:570]
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] GetDeviceTickets
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] Method failed [AuthTicketHelper::AddTickets:1092]
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] Method failed [CUpdateEndpointProvider::GenerateSecurityTokenWithAuthTickets:1587]
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] GetAgentTokenFromServer
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] GetAgentToken
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] EP:Call to GetEndpointToken
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Misc            *FAILED* [80070426] Failed to obtain service 855E8A7C-ECB4-4CA3-B045-1DFA50104289 plugin Client/Server auth token of type 0x00000001
YYYY/MM/DD HH:mm:ss:SSS PID  TID  ProtocolTalker  *FAILED* [80070426] Method failed [CAgentProtocolTalkerContext::DetermineServiceEndpoint:377]
YYYY/MM/DD HH:mm:ss:SSS PID  TID  ProtocolTalker  *FAILED* [80070426] Initialization failed for Protocol Talker Context
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           Exit code = 0x80070426
YYYY/MM/DD HH:mm:ss:SSS PID  TID  Agent           * END * Finding updates CallerId = Update;taskhostw  Id = 25

0x80070426错误代码转换为:

ERROR_SERVICE_NOT_ACTIVE - # The service has not been started.

Microsoft帐户登录助手(MSA 或 wlidsvc)是相关服务。 DCAT 外部测试服务(ServiceId:855E8A7C-ECB4-4CA3-B045-1DFA50104289)依赖于 MSA 获取设备的全局设备 ID。 如果没有运行 MSA 服务,客户端不会生成全局设备 ID 并发送,并且搜索功能更新永远不会成功完成。

若要解决此问题,请将 MSA 服务重置为默认的 StartType“manual”。

Windows 更新使用 WinHttp 和部分范围请求(RFC 7233)从Windows 更新服务器或本地 WSUS 服务器下载更新和应用程序。 因此,网络上的代理服务器必须支持 HTTP RANGE 请求。 如果在 Internet Explorer(用户级别)而不是 WinHTTP(系统级别)中配置了代理,则与Windows 更新的连接将失败。

若要解决此问题,请使用以下 netsh 命令在 WinHTTP 中配置代理:

netsh winhttp set proxy ProxyServerName:PortNumber 

注意

还可以使用以下命令从 Internet Explorer 导入代理设置: netsh winhttp import proxy source=ie

如果通过代理服务器下载失败并出现0x80d05001 DO_E_HTTP_BLOCKSIZE_MISMATCH错误,或者更新下载时 CPU 使用率较高,请检查代理配置以允许 HTTP RANGE 请求运行。

可以选择应用规则以允许以下 URL 的 HTTP RANGE 请求:

  • *.download.windowsupdate.com
  • *.dl.delivery.mp.microsoft.com
  • *.delivery.mp.microsoft.com

如果不允许 RANGE 请求,你将在更新中下载的内容多于所需的内容(因为增量修补将不起作用)。

此更新不适用于计算机

下表描述了此错误的最常见原因:

原因 解释 解决方法
更新已被取代 随着组件的更新发布,更新的组件将取代系统上已有的旧组件。 出现此问题时,将上一次更新标记为被取代。 如果尝试安装的更新已在系统上安装了较新版本的有效负载,则可能会收到此错误消息。 检查要安装的包是否包含较新版本的二进制文件。 或者,检查包是否被另一个新包取代。
更新已安装 如果尝试安装的更新以前安装过,例如,由携带相同有效负载的另一个更新安装,则可能会遇到此错误消息。 验证你尝试安装的包之前是否未安装。
体系结构的更新错误 更新由 CPU 体系结构发布。 如果尝试安装的更新与 CPU 的体系结构不匹配,可能会遇到此错误消息。 验证要尝试安装的包是否正在使用的 Windows 版本匹配。 可以在每个更新的相应文章的“适用于”部分中找到 Windows 版本信息。 例如,仅 Windows Server 2012 更新不能安装在基于 Windows Server 2012 R2 的计算机上。
此外,请验证要安装的包是否与所使用的 Windows 版本的处理器体系结构匹配。 例如,不能在基于 x64 的 Windows 安装项上安装基于 x86 的更新。
缺少必备组件更新 某些更新需要先决条件更新,然后才能将其应用于系统。 如果缺少先决条件更新,可能会遇到此错误消息。 例如,KB 2919355必须安装在 Windows 8.1 和 Windows Server 2012 R2 计算机上,然后才能安装 2014 年 4 月之后发布的许多更新。 查看有关Microsoft知识库(KB)中的包的相关文章,确保已安装必备组件更新。 例如,如果在 Windows 8.1 或 Windows Server 2012 R2 上遇到错误消息,则可能必须安装 2014 年 4 月更新2919355作为先决条件和一个或多个必备服务更新(KB 2919442 和 KB 3173424)。
若要确定是否已安装这些先决条件更新,请运行以下 PowerShell 命令:
get-hotfix KB3173424,KB2919355, KB2919442
如果安装了更新,该命令将返回输出部分中的已安装日期 InstalledOn

可能会在Windows 更新日志中看到的错误:

DownloadManager    Error 0x800706d9 occurred while downloading update; notifying dependent calls. 

[DownloadManager] BITS job {A4AC06DD-D6E6-4420-8720-7407734FDAF2} hit a transient error, updateId = {D053C08A-6250-4C43-A111-56C5198FE142}.200 <NULL>, error = 0x800706D9 

DownloadManager [0]12F4.1FE8::09/29/2017-13:45:08.530 [agent]DO job {C6E2F6DC-5B78-4608-B6F1-0678C23614BD} hit a transient error, updateId = 5537BD35-BB74-40B2-A8C3-B696D3C97CBA.201 <NULL>, error = 0x80D0000A 

转到 Services.msc 并确保已启用 Windows 防火墙服务。 Microsoft不支持停止与具有高级安全性的 Windows 防火墙关联的服务。 有关详细信息,请参阅 我需要禁用 Windows 防火墙

因配置冲突策略而引起的问题

Windows 更新提供了广泛的配置策略来控制托管环境中Windows 更新服务的行为。 虽然这些策略允许你在精细级别配置设置,但配置错误或设置冲突策略可能会导致意外行为。

有关详细信息,请参阅 如何使用组策略或注册表设置配置自动更新。

设备无法访问更新文件

确保设备可以通过防火墙访问必要的Windows 更新终结点。 例如,对于 Windows 10 版本 2004,以下协议必须能够访问这些相应的终结点:

协议 终结点 URL
TLS 1.2 *.prod.do.dsp.mp.microsoft.com
HTTP emdl.ws.microsoft.com
HTTP *.dl.delivery.mp.microsoft.com
HTTP *.windowsupdate.com
HTTPS *.delivery.mp.microsoft.com
TLS 1.2 *.update.microsoft.com
TLS 1.2 tsfe.trafficshaping.dsp.mp.microsoft.com

注意

请确保不要为指定 HTTP 的终结点使用 HTTPS,反之亦然。 连接将失败。

特定终结点可能因 Windows 客户端版本而异。 例如, 请参阅 Windows 10 2004 企业版连接终结点。 附近目录中提供了适用于其他 Windows 客户端版本的类似文章。

更新不会从 Intranet 终结点下载(WSUS 或 Configuration Manager)

Windows 客户端设备可以从各种源接收更新,包括联机Windows 更新、Windows Server Update Services 服务器等。 若要确定设备上当前正在使用的Windows 更新源,请执行以下步骤:

  1. 以管理员身份启动 Windows PowerShell。

  2. 运行 cmdlet:

    
    $MUSM = New-Object -ComObject "Microsoft.Update.ServiceManager"
    
  3. 运行 cmdlet:

    $MUSM.Services
    

检查 Name 和 OffersWindowsUPdates 参数的输出,可以根据此表进行解释。

输出 含义
- 名称:Microsoft更新
-OffersWindowsUpdates: True
- 更新源是Microsoft更新,这意味着除了操作系统之外的其他Microsoft产品的更新也可以交付。
- 指示客户端配置为接收所有Microsoft产品的更新(Office 等)
- 名称:DCat 外部测试版 Prod
- OffersWindowsUpdates: True
- 从 Windows 10 版本 1709 开始,功能更新始终通过 DCAT 服务传递。
- 指示客户端配置为从Windows 更新接收功能更新。
- 名称:Windows 应用商店(DCat Prod)
- OffersWindowsUpdates: False
-更新源是应用商店应用的预览体验计划更新。
- 指示客户端不会接收或未配置为接收这些更新。
- 名称:Windows Server 更新服务
- OffersWindowsUpdates: True
- 源是 Windows Server Updates Services 服务器。
- 客户端配置为从 WSUS 接收更新。
- 名称:Windows 更新
- OffersWindowsUpdates: True
- 源Windows 更新。
- 客户端配置为从 Windows 更新 Online 接收更新。

环境中设置不正确

在此示例中,根据通过注册表设置的组策略,系统将配置为使用 WSUS 下载更新(记下第二行):

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU] 
"UseWUServer"=dword:00000001

从Windows 更新日志:

2018-08-06 09:33:31:085  480 1118 Agent ** START **  Agent: Finding updates [CallerId = OperationalInsight  Id = 49] 
2018-08-06 09:33:31:085  480 1118 Agent ********* 
2018-08-06 09:33:31:085  480 1118 Agent   * Include potentially superseded updates 
2018-08-06 09:33:31:085  480 1118 Agent   * Online = No; Ignore download priority = No 
2018-08-06 09:33:31:085  480 1118 Agent   * Criteria = "IsHidden = 0 AND DeploymentAction=*" 
2018-08-06 09:33:31:085  480 1118 Agent   * ServiceID = {00000000-0000-0000-0000-000000000000} Third party service 
2018-08-06 09:33:31:085  480 1118 Agent   * Search Scope = {Machine} 
2018-08-06 09:33:32:554  480 1118 Agent   * Found 83 updates and 83 categories in search; evaluated appl. rules of 517 out of 1473 deployed entities 
2018-08-06 09:33:32:554  480 1118 Agent ********* 
2018-08-06 09:33:32:554  480 1118 Agent **  END  **  Agent: Finding updates [CallerId = OperationalInsight  Id = 49] 

在上面的日志代码片段中,我们看到 .Criteria = "IsHidden = 0 AND DeploymentAction=*" “*”表示服务器未指定任何内容。 因此,扫描发生,但无法向代理下载或安装。 因此,它只需扫描更新并提供结果。

如以下日志中所示,自动更新运行扫描,并找不到批准它的更新。 因此,它报告没有安装或下载的更新。 这是因为配置不正确。 WSUS 端应批准Windows 更新的更新,以便根据策略提取更新并在指定时间安装更新。 由于此方案不包括 Configuration Manager,因此无法安装未经批准的更新。 你期望操作见解代理执行扫描并自动触发下载和安装,但此配置不会发生这种情况。

2018-08-06 10:58:45:992  480 5d8 Agent ** START **  Agent: Finding updates [CallerId = AutomaticUpdates  Id = 57] 
2018-08-06 10:58:45:992  480 5d8 Agent ********* 
2018-08-06 10:58:45:992  480 5d8 Agent   * Online = Yes; Ignore download priority = No 
2018-08-06 10:58:45:992  480 5d8 Agent   * Criteria = "IsInstalled=0 and DeploymentAction='Installation' or IsPresent=1 and DeploymentAction='Uninstallation' or IsInstalled=1 and DeploymentAction='Installation' and RebootRequired=1 or IsInstalled=0 and DeploymentAction='Uninstallation' and RebootRequired=1" 
   
2018-08-06 10:58:46:617  480 5d8 PT   + SyncUpdates round trips: 2 
2018-08-06 10:58:47:383  480 5d8 Agent   * Found 0 updates and 83 categories in search; evaluated appl. rules of 617 out of 1473 deployed entities 
2018-08-06 10:58:47:383  480 5d8 Agent Reporting status event with 0 installable, 83 installed,  0 installed pending, 0 failed and 0 downloaded updates 
2018-08-06 10:58:47:383  480 5d8 Agent ********* 
2018-08-06 10:58:47:383  480 5d8 Agent **  END  **  Agent: Finding updates [CallerId = AutomaticUpdates  Id = 57] 

通过 Windows 更新 在 Windows 客户端上使用高带宽

用户可能会看到 Windows 正在系统上下文下的不同办公室消耗所有带宽。 此行为是特意这样设计的。 可能会消耗带宽的组件扩展到Windows 更新组件之外。

以下组策略可帮助缓解这种情况:

连接到 Internet 的其他组件:

负载过大或网络拥塞导致的暂时性错误

用户可能会收到来自Windows 更新的以下错误。 这些错误是暂时性错误,在服务暂时处于负载过大或网络拥堵时发生。 用户无需执行任何操作,因为设备稍后将重试该操作。

错误代码 错误值 详细信息
WU_S_SEARCH_LOAD_SHEDDING 0x248001 搜索操作已成功完成,但一个或多个服务正在卸载负载。
WU_E_PT_LOAD_SHEDDING 0x8024402d 服务器正在卸载负载。

在这些情况下,以编程方式调用 Windows 更新 代理 API 以检索搜索操作的结果的用户将获得 orcFailedorcSucceededWithErrors。 稍后重试操作应成功。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。