windows更新常用排查方案

作者:棋玉

注:修改操作前,请先执行快照作为备份!!!


1.使用自动修复工具先修复看一下:
https://support.microsoft.com/zh-cn/help/4027322/windows-update-troubleshooter


2.运行如下命令行,手动重置windows update:
net stop cryptsvc
net stop BITS
net stop WUAUSERV
Ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak
Ren %systemroot%\system32\catroot2 catroot2.bak
net start cryptsvc
net start BITS
net start WUAUSERV



3.2008/2008R2 机器,参考如下步骤:
(1). 运行System File Checker utility (SFC.exe)


右击cmd, 选择以管理员身份运行,运行以下命令行
sfc /scannow
(2). 运行checksur


a.点击以下链接:
https://support.microsoft.com/zh-cn/kb/947821

b.根据系统版本(是X86 还是X64 )选择下载对应的程序包。
windows更新常用排查方案

c.下载后,安装补丁(注:这个补丁和常规意义的补丁并不一样,这个补丁是用来检测更新的库是否正常并尝试修复的一个工具)。

(3)安装3177467(仅适用2008R2 系统)
https://support.microsoft.com/zh-cn/help/3177467/servicing-stack-update-for-windows-7-sp1-and-windows-server-2008-r2-sp
windows更新常用排查方案

2012/2016 机器,参考如下步骤:
(1). 运行System File Checker utility (SFC.exe)


右击cmd, 选择以管理员身份运行,运行以下命令行
sfc /scannow

(2). 完成后在执行以下命令:

DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth



4.卸载三方安全类软件比如360,安全狗(注:将进程停止是不行的,因为驱动和组件已经加载在内核里,需要卸载并重启服务器)


5.还是有问题的话,需要查看日志

"C:\Windows\Logs\CBS\CBS.log"
"C:\Windows\WindowsUpdate.log"

建议查看日志的技巧:

1.根本kb号或者错误代码搜索,找到这一行(这一行就是补丁安装的结束位置):
WER: Generating failure report for package: Package_for_KB.....
windows更新常用排查方案

2.查看靠近这行之前的报错(这些报错才是补丁失败的真正原因)尤其是第一个报错,以下示例,补丁安装的直接原因是Failed call to CryptCATAdminAddCatalog. [HRESULT = 0x8000ffff - Unknown Error]
windows更新常用排查方案

3.这个报错是跟Cryptographic Services 和 catroot2 有关,查看C:\Windows\System32\catroot2\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 缺失catdb 文件,可以从相同版本正常机器尝试拷贝文件测试。

windows更新常用排查方案
对于在重启过程发生补丁回滚的,分析日志要以rollback 为关键字(如下示例,这行表示补丁配置失败了,开始rollback 即回滚)

windows更新常用排查方案
之后查看最靠近这行的报错,是在执行C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe 的时候报错了。
windows更新常用排查方案

这个案例中,查看C:\Windows\Microsoft.NET\Framework64\v4.0.30319 缺失了ngen.exe,同时该目录下还缺失了很多其他文件,建议相同版本正常机器尝试拷贝文件测试或者重置系统。
windows更新常用排查方案

注:如果是多个补丁安装失败的情况,建议只选择一个补丁进行安装,针对这个补丁先看一下具体的报错

上一篇:windows激活报错0x80070020或0x80041010


下一篇:Spring data jpa Specification查询关于日期的范围搜索