【解決方案】Windows更新發生問題

Windows使用者一般在進行Windows更新時,偶爾會遇到更新錯誤,尤其是大更新時,常常會有傳出什麼更新後的災情,本次就分享一些更新時較通用的處理方法。

Jerome Lin
Coding Learning Sharing
9 min readFeb 13, 2021

--

前言

身為重度電腦使用者,無論是做研究、接案子還是用在休閒娛樂,手邊有一台筆電是相當方便的。而筆電這樣一體式,有著明顯規格限制的電腦,隨著商品的推陳出新,整體的汰換頻率也會比桌電高。

一般來說,在很多時候,我們使用一台電腦並不會單純只為了做或完成一件事,我們會一心多用。這樣的例子,用在隨時想要盯盤的人來說可能挺貼切的,可能手邊有一個投資組合清單、幾個觀察標的,或是想要比較同類型商品的走勢方向,藉此作為進出場參考。又或者是在做研究時,會需要寫到程式輔助運算,並且要同時看論文,研究到一半又想要做其他事情...等等情況。

以上這樣需要多工的情況,使用多個電腦、開發板或多個顯示器就能夠解決。不過問題大多在於,資源不足...。

我手邊正好有一台其實能夠正常運作,但由於換新電腦而暫時擱置不使用的筆電,就稱它是舊筆電吧。偶爾我會開著,畢竟是舊筆電,當初會淘汰不使用,也是因為效能問題,所以只是用來作為延伸顯示器的替代品。當然,必要的時候,還是可以用來處理運算或測試等等用途。

話又說回來,也因為是舊電腦,我們在進行新版本的Windows Update相較於新的電腦而言,也更容易出現問題,形成一種本來是要解決問題的作法,卻同時又在產生問題的情形。近期在進行Windows更新時,就遇到了藍屏的問題...,重新開始更新就出現了錯誤代碼,更新不成功了...。

如下圖所示:

問題解決思考

這邊是廢文的開始....

要解決這個問題,我們可以對不同的情況進行分析:

  1. 反正使用上並無問題,就不要繼續更新了吧~
  2. 尚不支援
  3. 因為是更新中途出狀況,可能是網路、硬體、軟體或應用服務的相衝突導致
  4. etc.

針對第一點,這顯然是不推薦的,雖然不是最新更新版本就是往好的方向,但之所以要進行更新,就是要修補漏洞或是修正元件與改善使用體驗。所以這與原本的意圖相衝。

第二點則是真的只能等待,但一般而言,它會出現選項提供更新服務,應該是能夠支援了才對。

因此很明顯地,第三點就是我們要繼續往下思考的方向。

要解決問題,對症下藥最有效,看是因為什麼問題導致,就優先去修正那個問題。

比方說,在網路沒問題,而是否與什麼應用程式相衝突尚不明確的情況下,我們看到了它給出一段錯誤代碼,我們通常會想要去Google搜尋這段代碼代表的意思,以及怎麼解決。

這意味著,我們哪天又遇到了其他不同的錯誤代碼,很容易又會遵循類似的作法,結果卻又不一定能找到答案。

廢文結束~~

為了找出比較通用的解法,我們勢必得跳出這樣的思考邏輯,避免無限輪迴。如果我們不去糾結那段錯誤代碼呢?畢竟那段錯誤代碼,我想也不是給一般用戶要去理解的,而是給相關開發者進行debug。

其實我們如果去官方的說明頁面,它也提到了,一般使用者不需要特地針對某個錯誤代碼進行解決。

同一個頁面繼續往下滑,會有不同Windows版本的選項:

不過,就像是此說明頁面開頭所說,Windows 10版本的要查看另外一篇:

只不過,如果按照引導照做了...

這邊要提到,我的舊筆電雖然原生是安裝Windows 8版本,但也自行升級到了Windows 10。因此,即便是官方針對Windows 10版本的解決辦法並未很好地提供出來,我們還是可以參考看看過往版本都是如何解決。

通用的解決方案

這邊統整一下,為了真正的對症下藥,我們可以:

  1. 透過Windows提供的疑難排解進行解決
  2. 清除導致Windows更新錯誤的相關安裝檔案
  3. 解除安裝或結束相衝突的應用程式與服務
  4. 重新開機,重置作業系統環境
  5. etc.

話不宜遲,就先從Windows疑難排解開始吧,這也是官方強烈優先推薦的~~~。如下圖所示:

只不過,通常這個步驟很多時候,會得到無法識別問題的回應就是了...:

一般來說,使用者自行手動排除錯誤,會是一個更有效的方案,也更為直接,自動化工具多是做一個簡易的問題排除而已。但我們可以仔細觀察一下它所執行的步驟,這些動作跟我們自行輸入CMD指令多半脫離不了關係。

我們可以看到它對重新啟動做了檢查,或許先前的安裝並不完全,需要重新啟動才能設置完成,導致目前的Windows更新失敗。

再來是初始化診斷、安全性描述元(安全描述符, Security Descriptor)與登錄機碼的檢查。一般來說,Security Descriptor多與權限與存取控制有關,包含一個叫做SECURITY_DESCRIPTOR的資料結構,附帶著一些security information。

參考資源如下:

最後,它重啟了叫做Bits的服務,這代表整個過程,它可能在初始化階段先關閉了這個服務。可能這個服務會佔用到某些資源等等,需要優先進行釋放。這種情形,最常見的就是退出隨身碟,結果某個應用程式還在對這個隨身碟裡的檔案進行處理等等。

那這個簡易的疑難排解工具無法解決怎麼辦呢?

我們看看在先前版本,官方推薦的問題解決方法,如下圖所示(以Windows 8.1為例):

我們發現它又提到了bits服務,bits服務又稱為Background Intelligent Transfer Service(背景智慧型傳輸服務),顧名思義,它就是一項在背景負責傳輸的服務,在這邊很明顯,它會與Windows Update相關聯。

而由於Windows Update涉及到了網路檔案傳輸,網路安全的問題也需要考慮進來,這個部分也是過往沒特別被重視,近來被關注的問題。所以它也關閉了一個叫做cryptsvc的服務,全名為Cryptographic Services,被用來管理資訊加密這件事。

參考說明頁面如下:

接著,它也關閉了Windows Update本身,也就是wuauserv服務。

其實,整個過程,它只做了三件事:

  1. 關閉相關的服務或程序
  2. 對某個資料夾做重新命名(而不是直接刪除,單純作為備份資料用途)
  3. 重新啟用步驟一關閉的服務與程序

這個部分,就是我們剛才進行統整時提到的第二點,清除導致Windows更新錯誤的相關安裝檔案,當然,最好是先進行備份比較好,所以這邊的部分它做了重新命名。

並且,由此可知,與Windows Update相關的資料夾位置(%systemroot%/softwaredistribution、%systemroot%/system32/catroot2),%systemroot%是Windows環境變數中所定義的

參考資源如下:

完整路徑如下圖所示:

因此,整個流程我們都了解之後,我們可以照著執行:

這邊可以看到,如果我們不優先釋放資源,我們是無法直接對這個資料夾進行重新命名的,所以我們可以一步一步進行服務或程序的暫時停止。

成功解決

到了這一步,基本上能夠成功解決Windows Update遇到錯誤的問題,如下圖所示:

而由於我這台筆電是比較舊的機種,因此,有一些版本的大更新是無法支援的,這倒是沒關係,至少目前這個版本的最新更新已更新完畢。

而其他像是自行重新開機,或是關閉某些相衝突應用程式的部分,基本上在以上提到的觀念已有重疊,只是要注意,我們直接關閉某些程式運作會不會產生新的問題,我們必須對這樣相對不可逆的操作足夠了解,才不會事倍功半。

結論

關於Windows Update,常更新其實是一件好事,只要不會漏洞越補越多,能夠防止我們的系統遭到入侵,或是能夠使用最新的功能與服務。

我想,令大多數人最為困擾的應該是Windows Update多半會伴隨著要重新開機,這意味著目前正在處理的事情都要重新被開啟與設定。並且,若Windows Update在背後自行進行更新,除了那段期間會突然被佔用網路資源之外,電腦也被自行重新啟動的那種滋味並不好受。

無論如何,本篇就整理了一些Windows Update的處理思考方向,與一個比較通用的解決方案。

--

--

Jerome Lin
Coding Learning Sharing

覺得平凡就好,但還是多少充實一下人生。It feels good to be ordinary, but you still need to enrich your life a little bit. Buy Me A Coffee: https://www.buymeacoffee.com/jeromelinil