作者:棋玉
注:修改操作前,請先執行快照作為備份!!!
1.使用自動修複工具先修複看一下:
https://support.microsoft.com/zh-cn/help/4027322/windows-update-troubleshooter2.運作如下指令行,手動重置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/947821b.根據系統版本(是X86 還是X64 )選擇下載下傳對應的程式包。

c.下載下傳後,安裝更新檔(注:這個更新檔和正常意義的更新檔并不一樣,這個更新檔是用來檢測更新的庫是否正常并嘗試修複的一個工具)。
(3)安裝3177467(僅适用2008R2 系統)
https://support.microsoft.com/zh-cn/help/3177467/servicing-stack-update-for-windows-7-sp1-and-windows-server-2008-r2-sp2012/2016
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.....
2.檢視靠近這行之前的報錯(這些報錯才是更新檔失敗的真正原因)尤其是第一個報錯,以下示例,更新檔安裝的直接原因是Failed call to CryptCATAdminAddCatalog. [HRESULT = 0x8000ffff - Unknown Error]
3.這個報錯是跟Cryptographic Services 和 catroot2 有關,檢視
C:\Windows\System32\catroot2\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
缺失catdb 檔案,可以從相同版本正常機器嘗試拷貝檔案測試。
對于在重新開機過程發生更新檔復原的,分析日志要以rollback 為關鍵字(如下示例,這行表示更新檔配置失敗了,開始rollback 即復原)
之後檢視最靠近這行的報錯,是在執行
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe
的時候報錯了。
這個案例中,檢視
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
缺失了ngen.exe,同時該目錄下還缺失了很多其他檔案,建議相同版本正常機器嘗試拷貝檔案測試或者重置系統。
注:如果是多個更新檔安裝失敗的情況,建議隻選擇一個更新檔進行安裝,針對這個更新檔先看一下具體的報錯