“更新失败”这四个字掩盖了一个事实:从发起请求到病毒库真正生效,中间有四个环节,任何一个坏了提示都一样。先定位环节,再处理原因,比反复点重试有效。
先看版本号,不要看提示
提示只能告诉你没成功,版本号能告诉你停在哪儿。
# Defender:看定义库版本与最后更新时间
Get-MpComputerStatus | Select-Object AntivirusSignatureVersion,
AntivirusSignatureLastUpdated, QuickScanAge
# 第三方软件直接看关于页或者主界面上的库日期,一样能用
根据两个数字可以分成四种情况:
| 现象 | 在哪一环坏了 | 优先查什么 |
|---|---|---|
| 库日期完全不变,一直停在很久以前 | 下载环节 | 网络、hosts、代理 |
| 下载时有进度,最后提示失败 | 校验环节 | 系统时间、证书服务 |
| 提示更新成功但版本号没变 | 安装环节 | 磁盘空间、服务权限 |
| 版本号在变但隔几天又回退 | 两家防护在打架 | 是否装了多家 |
五分钟自查命令清单
按这个顺序跑一遍,大部分问题能定位。
一、系统时间
时间偏差是下载与校验环节里最常见又最少被怀疑的原因。证书有效期校验依赖本地时间,时间差几十分钟就可能报错。
Get-Date
w32tm /query /status
# 不同步时手动拉一次
w32tm /resync
CMOS 电池没电的机器会反复出现同一症状:每次开机时间都回到几年前,更新永远失败。这一类问题重装系统、换软件都解决不了。
二、hosts 与域名解析
很多上网优化、广告拦截工具会改 hosts,把厂商的升级域名一起屏蔽了。
$h = C:\Windows\System32\drivers\etc\hosts
Get-Content $h | Select-String -Pattern "^[^#]"
看输出里有没有大量指向 127.0.0.1 的行。如果有,把涉及安全软件域名的那几行删掉,或者先整体备份后清空 hosts 重试。hosts 里出现安全软件自身的域名,是一个相当典型的被优化工具弄坏的信号。
三、四个依赖服务
升级依赖的系统服务被开机优化禁掉,是第二常见的原因:
Get-Service wuauserv, BITS, CryptSvc, msiserver |
Select-Object Name, DisplayName, Status, StartType
- wuauserv 即 Windows Update,部分软件走系统升级通道。
- BITS 是后台智能传输,大量更新下载靠它,被禁后表现为下载进度为零。
- CryptSvc 是加密服务,负责证书与签名校验,被禁后表现为下载完了但安装失败。
- msiserver 是 Windows Installer,以安装包形式更新时依赖。
StartType 显示 Disabled 而你需要它,就改回手动或者自动:
Set-Service -Name BITS -StartupType Manual
Start-Service -Name BITS
四、磁盘与临时目录
库文件要写入临时目录再安装。C 盘剩余不足、或者临时目录权限被改过,都会表现为下载成功但安装失败。
- 看 C 盘可用空间,不要低于 5 GB。
- 右键临时目录的安全页,确认当前用户对它有写入权限。
- 少数工具会把环境变量 TEMP 指向一个不存在的路径,这个错误不报更新失败,而是报内部错误。
手动触发一次,区分软件问题与网络问题
Defender 可以直接命令拉库:
Update-MpSignature
Get-MpComputerStatus | Select-Object AntivirusSignatureLastUpdated
如果手动执行后版本号前进了,而自动更新仍失败,问题在定时任务而不是网络。到任务计划里找它的更新任务,看上一次执行结果代码。
如果手动执行也失败,拿同一个下载地址在浏览器里试一下能不能打开。能打开但更新不行,是代理或者证书问题;打不开,是域名解析或者网络问题。
公司环境的两种特殊情况
- 内网机不允许访问公网更新域名。这时更新失败是预期行为,需要走厂商的内网升级服务器,或者由集中控制台分发,自己反复重试没有意义。
- 组策略把 Windows Update 指向了内部服务,导致依赖它的第三方更新也拿不到东西。用 gpresult 导出一个策略报告,看应用了哪些策略,比猜快。
更新失败多久需要真的担心
- 三天内:基本不影响防护。本地库对常见家族仍有效,可疑行为拦截不依赖库。
- 一到两周:开始错过新变种的特征,启发式拦截会变多,误报也会变多。
- 超过两周:建议把它当成一个安全事件处理,而不是软件故障。先确认系统有没有其它异常,再修更新。
最后一句
更新失败这件事,重试次数与成功率基本无关。先看库日期停在哪个环节,然后按时间、hosts、服务依赖、磁盘四步查。多数卡了两三周不动的更新,最后都只是一个被优化掉的服务。