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

安全软件总是提示“病毒库更新失败”?按四个环节拆开排查

2 浏览 病毒库 更新失败 BITS 排查

“更新失败”这四个字掩盖了一个事实:从发起请求到病毒库真正生效,中间有四个环节,任何一个坏了提示都一样。先定位环节,再处理原因,比反复点重试有效。

先看版本号,不要看提示

提示只能告诉你没成功,版本号能告诉你停在哪儿。

# 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、服务依赖、磁盘四步查。多数卡了两三周不动的更新,最后都只是一个被优化掉的服务。

与本文相关的文章