最新消息: 预先成其事必先利其器

Windows 更新失败先分清是下载出错还是安装出错

3 浏览 系统更新 故障排查 组件存储

Windows 更新失败的提示里那串十六进制代码看着复杂,其实只说明失败发生在哪一步。把失败分成三类,处置顺序就固定了,不需要把网上的偏方一个个试。

先看失败发生在哪一步

在 设置 > Windows 更新 > 更新历史记录 里看清楚是下载失败、安装失败还是卸载后回滚失败。三类里只有安装失败才值得动组件存储,下载失败基本都是时间、代理、域名访问或者缓存目录的问题,和系统本身无关。这一步在动手前确认,不然很容易把网络问题当成系统损坏去修。

下载失败查四个外部条件

  1. 系统时间。日期或时区不对会让加密连接握手失败,表现为下载一直重试。
  2. 代理与域名解析。公司网络和某些加速工具会改代理设置,用 netsh 和注册表里的 Internet Settings 两处对照看。
  3. 安全软件的下载拦截。部分管家的网页防护会把更新文件当成可疑下载拦下,暂停防护重试一次能很快定性。
  4. 更新缓存目录本身损坏。把 SoftwareDistribution 下的 Download 目录改名让系统重建,这一步不会影响已经装好的补丁。

安装失败才轮到系统修复

代码尾号 0x80070005 一类是权限问题,常见于第三方工具改过服务账户或者目录权限;0x800f 开头多指向组件存储缺料;0x8024 开头则更可能是更新服务自身的状态异常。分清不是为了背代码,而是决定要不要跑下面两条。

netsh winhttp show proxy
Rename-Item 'C:\Windows\SoftwareDistribution\Download' Download.old
DISM /Online /Cleanup-Image /RestoreHealth
SFC /scannow

后两条要在管理员权限的命令行里跑,DISM 需要能联网取源,断网或者在公司代理后面要指定本地镜像作为源,否则它会报找不到文件。修复完重启再做一次检查,不要连着跑第三遍。

回滚循环是另一条链

更新装上又自动卸掉、反复回滚的处置路径和上面完全不同,它涉及启动组件和待处理操作,本站 154 篇写过那条链。这里只提一项和本文交叉的情况:有些安全软件在卸载阶段会锁定系统文件,让回滚卡在同一个位置,这时从事件日志里看具体被锁的文件名就能直接指出是谁在做。

一个通用判断原则

同一台机器上反复失败、而且每次代码都相同的补丁,先怀疑外部拦阻,安全软件、代理和驱动残留都在这一类里;一批补丁同时失败、代码不固定,才考虑系统本身损坏。这个判断能砍掉一半排查时间。

与本文相关的文章