0%

解决公司 Win7 更新时的 0x80092004 错误

从大概 8 月份开始,公司配发的电脑(Windows 7 系统)就总是提示有更新,但每次更新都安装失败。不断提示更新很打扰工作思路,于是下决心解决。

经检查,问题出在 KB4512506/KB4516065(Windows 7 月安全质量汇总更新)上,尝试安装该更新时,系统会提示 0x80092004 错误。上网检查后确认,该错误代码与 CRYPT_E_NOT_FOUND 有关。也就是说,Windows Update 发现更新文件的散列值不匹配,于是拒绝安装。

`0x80092004` 错误

进一步检查发现,微软在给 Windows 7 和 Windows Server 2008 R2 的更新中修改了散列值签名方式,而 19 年 8 月发布的 7 月安全质量汇总更新,正是新签名方式第一次生效的时候。具体来说,原先会使用 SHA-1 和 SHA-2 同时签名;但因为众所周知的安全问题,微软放弃了 SHA-1 签名转而仅使用 SHA-2 签名。但如果 Windows 7 上的 Windows Update 依旧检查 SHA-1 签名,则会发现更新文件的散列值不匹配,于是拒绝安装,并报错 0x80092004

为解决这一问题,微软先期发布了两个相关更新:

  • KB4474419:用于在 Windows 7 等系统上支持 SHA-2 签名。
  • KB4490628:服务堆栈更新,解决了安装仅使用 SHA-2 哈希算法签名的更新时服务堆栈中的问题。

安装 KB4512506 前,系统必须安装好这两个前置依赖,否则就会因签名问题报错 0x80092004

经检查,我的系统里安装了 KB4474419,但是没有安装 KB4490628。那么这就是导致问题的直接原因了。

那么根本原因在哪里呢?答案是:公司电脑的组策略配置决定了 Windows Update 由公司 IT 管理员来管理。公司 IT 可能没有正确配置安装 KB4490628,于是有后续问题。更加无奈的是,因为组策略配置的限制,我无法在 Windows Update 中搜索安装 KB4490628。幸运的是,我在微软 Update Catalog 当中找到了 KB4490628 的独立安装包。下载安装 KB4490628 的过程一切顺利。

安装完 KB4490628 之后,再次打开 Windows Update,尝试安装 KB4516065 则一切顺利。

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。