排查Windows 更新问题
适用于:Windows 10
试用虚拟代理 - 它可以帮助你快速识别和修复常见的Windows 更新问题
如果在使用Windows 更新时遇到问题,请从以下步骤开始:
运行内置Windows 更新疑难解答来修复常见问题。 导航到设置>更新和安全>故障排除>Windows 更新。
从 Microsoft 更新目录安装与 Windows 版本匹配的最新服务堆栈更新。 有关服务堆栈更新的详细信息,请参阅 服务堆栈更新。
请确保安装最新的 Windows 更新、累积更新和汇总更新。 若要验证更新状态,请参阅系统的相应更新历史记录:
- Windows 10 版本 2004 和 Windows Server 版本 2004
- Windows 10 版本 1909 和 Windows Server 版本 1909
- Windows 10 版本 1903 和 Windows Server 版本 1903
- Windows 10 版本 1809 和 Windows Server 2019
- Windows 10 版本 1803
- Windows 10 版本 1709
- Windows 10 版本 1703
- Windows 10 和 Windows Server 2016
- Windows 8.1 和 Windows Server 2012 R2
- Windows Server 2012
- Windows 7 SP1 和 Windows Server 2008 R2 SP1
高级用户还可以参考Windows 更新生成的日志进行进一步调查。
使用Windows 更新时,可能会遇到以下情况。
为什么我提供了较旧的更新?
提供给设备的更新取决于多种因素。 以下是一些最常见的属性:
- OS 内部版本
- OS 分支
- OS 区域设置
- 操作系统体系结构
- 设备更新管理配置
如果你提供的更新不是最新的可用更新,可能是因为你的设备由 WSUS 服务器管理,并且你得到了该服务器上的可用更新。 如果你的设备是部署组的一部分,则管理员可能会故意减缓更新的推出速度。 由于部署速度缓慢且以开始测量,因此所有设备都不会在同一天收到更新。
我的设备在扫描时被冻结。 为什么?
“设置”UI 与更新业务流程协调程序服务通信,而更新业务流程协调程序服务又与Windows 更新服务通信。 如果这些服务意外停止,则可能会看到此行为。 在这种情况下,请执行以下步骤:
关闭“设置”应用并重新打开它。
启动 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”。
与 HTTP/代理相关的问题
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 更新源,请执行以下步骤:
以管理员身份启动 Windows PowerShell。
运行 cmdlet:
$MUSM = New-Object -ComObject "Microsoft.Update.ServiceManager"
运行 cmdlet:
$MUSM.Services
检查 Name 和 OffersWindowsUPdates 参数的输出,可以根据此表进行解释。
环境中设置不正确
在此示例中,根据通过注册表设置的组策略,系统将配置为使用 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 更新组件之外。
以下组策略可帮助缓解这种情况:
- 阻止访问Windows 更新服务器:策略关闭对所有Windows 更新功能的访问权限(设置为启用)
- 驱动程序搜索:策略指定设备驱动程序源位置的搜索顺序(设置为“不搜索Windows 更新”)
- Windows 应用商店自动更新: 策略关闭自动下载和安装更新 (设置为启用)
连接到 Internet 的其他组件:
- Windows 聚焦: 策略在锁屏界面 上配置 Windows 聚焦(设置为禁用)
- 消费者体验: 策略关闭Microsoft消费者体验 (设置为启用)
- 来自 Windows 应用的后台流量: 策略允许 Windows 应用在后台运行
负载过大或网络拥塞导致的暂时性错误
用户可能会收到来自Windows 更新的以下错误。 这些错误是暂时性错误,在服务暂时处于负载过大或网络拥堵时发生。 用户无需执行任何操作,因为设备稍后将重试该操作。
错误代码 | 错误值 | 详细信息 |
---|---|---|
WU_S_SEARCH_LOAD_SHEDDING | 0x248001 | 搜索操作已成功完成,但一个或多个服务正在卸载负载。 |
WU_E_PT_LOAD_SHEDDING | 0x8024402d | 服务器正在卸载负载。 |
在这些情况下,以编程方式调用 Windows 更新 代理 API 以检索搜索操作的结果的用户将获得 orcFailed 或 orcSucceededWithErrors。 稍后重试操作应成功。
数据收集
如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。