修正 Windows Update 損毀和安裝失敗

本文提供進階的手動方法來修正使用部署映像服務與管理 (DISM) 工具來防止 Windows Update 順利安裝的問題。

注意

本文主要提供給支援專員與 IT 專業人員使用。 如果您是家用版使用者,並在尋找修正 Windows Update 錯誤的詳細資訊,請參閱修正 Windows Update 錯誤

原始 KB 編號:947821

常見的損毀錯誤

如果發生損毀錯誤,Windows 更新可能會無法安裝。 您可以檢查安裝程式事件記錄檔中是否有錯誤。 下表列出 Windows Update 可能出現的錯誤碼,以供您參考:

代碼 錯誤 描述
0x80070002 ERROR_FILE_NOT_FOUND 系統找不到指定的檔案。
0x800f0831 CBS_E_STORE_CORRUPTION CBS 商店已損毀。
0x8007000D ERROR_INVALID_DATA 資料無效。
0x800F081F CBS_E_SOURCE_MISSING 找不到套件或檔案的來源。
0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT 元件存放區處於不一致的狀態。
0x800736CC ERROR_SXS_FILE_HASH_MISMATCH 元件的檔案與元件資訊清單中呈現的驗證資訊不符。
0x800705B9 ERROR_XML_PARSE_ERROR 無法剖析請求的 XML 資料。
0x80070246 ERROR_ILLEGAL_CHARACTER 發生不正確字元。
0x8007370D ERROR_SXS_IDENTITY_PARSE_ERROR 識別字串格式不正確。
0x8007370B ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME 識別中的屬性名稱不在有效範圍內。
0x8007370A ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE 識別的屬性值不在有效範圍內。
0x80070057 ERROR_INVALID_PARAMETER 參數不正確。
0x800B0100 TRUST_E_NOSIGNATURE 主旨中不存在任何簽名。
0x80092003 CRYPT_E_FILE_ERROR Windows 更新讀取或寫入檔時發生錯誤。
0x800B0101 CERT_E_EXPIRED 對目前系統時鐘或已簽署檔案中的時間戳記進行驗證時,所需的憑證不在其有效期間內。
0x8007371B ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE 交易的一或多個必要成員不存在。
0x80070490 ERROR_NOT_FOUND Windows 無法搜尋新的更新。
0x800f0984 PSFX_E_MATCHING_BINARY_MISSING 符合的元件目錄存在,但是二進位遺失
0x800f0986 PSFX_E_APPLY_FORWARD_DELTA_FAILED 套用正向 delta 失敗
0x800f0982 PSFX_E_MATCHING_COMPONENT_NOT_FOUND 無法識別序列化的相符元件

例如,如果系統檔案有所損毀,可能無法安裝更新。 DISM 可協助您修正某些 Windows 損毀錯誤。

請查看此頁面,以了解 Windows Update 疑難排解案例 (部分機器翻譯)。

使用 DISM 修復 Windows Update 損毀

注意

本節所述的解決方案適用於最新 Windows 版本,例如 Windows 11、Windows 10、Windows Server 2016 或更新版本。

若要解決 Windows Update 損毀和解決更新安裝失敗的問題,請使用 DISM 工具。 然後,安裝 Windows Update。

  1. 開啟提高權限的命令提示字元。 若要這樣做,請開啟 [開始] 功能表,輸入命令提示字元,以滑鼠右鍵按兩下 [命令提示字元],然後選取 [以系統管理員身分執行]。 如果系統提示您輸入系統管理員密碼或確認,請輸入密碼,或選取 [ ]。

  2. 輸入下列命令,然後按下 Enter。 這可能要花費幾分鐘的時間才能完成命令操作。

    DISM.exe /Online /Cleanup-image /Restorehealth
    

    重要

    當您連線到 Microsoft 更新伺服器以擷取遺失或損毀的檔案時,DISM 修復效果最佳。 當您使用繼續命令時,DISM 會取得從 Windows Update 修正任何損毀所需的檔案。 不過,如果您的計算機無法連線到 Windows Update,您也可以使用運作中的 Windows 安裝作為修復來源,或是從網路上的 Windows 資料夾或 USB 或 DVD 使用檔案。 請改用此指令:

    DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:\\<servername>\c$\winsxs /LimitAccess
    

    注意

    將 servername> 取代<為您作為修復來源的電腦計算機名稱。 修復來源計算機必須執行相同的作業系統版本。 如需有關如何使用 DISM 工具修復 Windows 的詳細資訊,請參閱修復 Windows 映像。 如果掃描結果為「還原作業順利完成」,請移至下一個步驟。 如果沒有,請嘗試 分析CBS.log檔案 並修正錯誤。

  3. 輸入 sfc /scannow 命令,然後按下 Enter。 這可能要花費幾分鐘的時間才能完成命令操作。

  4. 關閉命令提示字元,然後再次執行 Windows Update

DISM 會建立記錄檔 (%windir%\Logs\CBS\CBS.log),以擷取工具找到或修正的任何問題。 %windir% 是指 Windows 安裝所在的資料夾。 例如,%windir% 資料夾是 C:\Windows

DISM 修復如何運作?

DISM 是一種命令行工具,可用來服務及修復 Windows 映射,包括 Windows 修復環境、Windows 安裝程式和 Windows PE(WinPE)。 它也可以用來修復電腦上的本機 Windows 映像。

為了進一步瞭解,以下是 DISM 工具檢查完整性的資源摘要:

  • 位於下列目錄中的檔案:
    • %SYSTEMROOT%\Servicing\Packages
    • %SYSTEMROOT%\WinSxS\Manifests
  • 位於下列登入子機碼下的登入資料:
    • HKEY_LOCAL_MACHINE\Components
    • HKEY_LOCAL_MACHINE\Schema
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing

您可以隨時更新此清單。 當 DISM 偵測到不正確的指令清單、封包或登錄數據時,它可能會以更正的版本取代不正確的數據。

記錄

DISM 工具會建立記錄檔,以擷取工具找到或修正的任何問題。 記錄檔位於下列位置:

  • %SYSTEMROOT%\Logs\CBS\CBS.log
  • %SYSTEMROOT%\Logs\CBS\CBS.persist.log

使用 DISM 公用程式手動修正 CBS 損毀的進階指南

步驟 1:分析CBS.log檔案

執行 DISM 命令之後,請移至 %WinDir%\Logs\CBS\CBS.log 以檢視結果。 記錄檔會提供所找到之錯誤掃描和詳細數據的摘要。

以下是記錄摘要的範例:

Checking System Update Readiness.
    (p)      CSI Payload Corrupt              (n)           amd64_microsoft-windows-a..modernappmanagement_31bf3856ad364e35_10.0.19045.3636_none_23b3b3ece690d77b\EnterpriseModernAppMgmtCSP.dll
       (p)    CBS MUM Missing                         (n)                 Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291
       (p)    CSI Manifest Corrupt             (w)    (Fixed)       wow64_microsoft-windows-audio-mmecore-acm_31bf3856ad364e35_10.0.19045.1_none_a12b40f4b4c7b751
    (p)      CSI Manifest Corrupt          (n)                    wow64_microsoft-windows-audio-volumecontrol_31bf3856ad364e35_10.0.19045.3636_none_4514b27cf12f35d5


Summary:
Operation: Detect and Repair 
Operation result: 0x800f081f
Last Successful Step: Remove staged packages completes.
Total Detected Corruption: 2
    CBS Manifest Corruption: 2
    CBS Metadata Corruption: 0
    CSI Manifest Corruption: 0
    CSI Metadata Corruption: 0
    CSI Payload Corruption: 0
Total Repaired Corruption: 1
    CBS Manifest Repaired: 1
    CSI Manifest Repaired: 0
    CSI Payload Repaired: 0
    CSI Store Metadata refreshed: False
Staged Packages:
    CBS Staged packages: 0
    CBS Staged packages removed: 0

注意

CSI 承載損毀:這表示承載檔案 EnterpriseModernAppMgmtCSP.dll 損毀。

CBS MUM 遺失:套件中缺少必要的 MUM 檔案(Microsoft-Windows-Client-Features-Package)。

CSI 指令清單損毀:指令清單損毀有兩個實例。 其中一個是固定的(wow64_microsoft-windows-audio-mmecore-acm),另一個(wow64_microsoft-windows-audio-volumecontrol)仍然損毀。

步驟 2:下載遺失的檔案

  1. 識別遺失或損毀的檔案。

    檢閱CBS.log檔案,以識別遺失或損毀的檔案。 例如:

    (p) CSI Payload Corrupt (n) amd64_microsoft-windows-a..modernappmanagement_31bf3856ad364e35_10.0.19045.3636_none_23b3b3ece690d77b\EnterpriseModernAppMgmtCSP.dll
    (p) CBS MUM Missing (n) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291
    (p) CSI Manifest Corrupt (n) wow64_microsoft-windows-audio-volumecontrol_31bf3856ad364e35_10.0.19045.3636_none_4514b27cf12f35d5
    
  2. 判斷包含遺漏檔案的更新。

    從記錄專案中,識別檔案路徑內的更新組建修訂 (UBR) 編號:

    • 在EnterpriseModernAppMgmtCSP.dll檔案中,UBR 號碼為 10.0.19045.3636
    • 在封裝中 Microsoft-Windows-Client-Features-Package ,UBR 號碼為 10.0.19045.4291
  3. 比對UBR編號與 KB 編號:

    1. 移至 您版本的 Windows 更新歷程記錄頁面 (例如 Windows 10 版本 22H2)。
    2. 比對UBR號碼 (36364291) 與列出的更新,以尋找 KB 編號。

    例如:

    • UBR 3636 可能會對應至KB5031445。
    • UBR 4291 可能會對應至KB5036892。
  4. 依 KB 號碼搜尋並下載更新:

    1. 使用已識別的 KB 編號來搜尋Microsoft更新目錄中更新。
    2. 下載與每個 KB 編號相關聯的更新,以還原遺失或損毀的檔案。

步驟 3:擷取 .msu 和 .cab 檔案

若要解決CBS.log檔案中識別的損毀檔案,請將遺失的檔案解壓縮到特定資料夾中。 請遵循下列步驟,使用提供的 PowerShell 腳本來擷取 .msu.cab 檔案,然後將必要的檔案複製到 C:\temp\Source 資料夾。

  1. 建立必要的資料夾。

    如果 C:\temp\Source 資料夾不存在,請執行下列命令來建立資料夾:

    mkdir C:\temp\Source
    
  2. 使用腳本中的指示和腳本:擷取 .msu 和 .cab 檔案,藉由提供檔案的.msu目的地路徑來擷取.msu檔案。

步驟 4:使用原始程式檔修復損毀的檔案

  1. 複製損毀檔案的正確版本。

    將屬於此更新 之所有損毀檔案的正確版本複製到 C:\temp\Source 資料夾。 例如,執行下列命令:

    Copy-Item "C:\path\extractedFiles\corruptedfile.dll" -Destination "C:\temp\Source"
    

    針對記錄中識別的每個損毀檔案重複此程式,直到所有損毀的檔案都複製到 C:\temp\Source 資料夾為止。

  2. 重新執行 DISM 命令。

    以系統管理員身分開啟命令提示字元,並使用 /Source 選項執行下列 DISM 命令:

    DISM /Online /Cleanup-Image /RestoreHealth /Source:C:\temp\Source\ /limit
    

步驟 5:驗證並確認

  1. 重新執行 DISM 命令。

    重新執行下列 DISM 命令,以確認問題已解決:

    DISM /Online /Cleanup-Image /ScanHealth
    
  2. 檢查CBS.log檔案。

    檢閱 CBS.log 檔案,以確保沒有剩餘的錯誤。

範例 DISM 命令輸出

DISM 還原命令的輸出會提供有關偵測到和修復之損毀的重要資訊:

Checking System Update Readiness.

(p) CBS MUM Missing (n) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4291
Repair failed: Missing replacement mum/cat pair.
(p) CBS MUM Missing (w) (Fixed) Microsoft-Windows-Client-Features-Package~31bf3856ad364e35~amd64~~10.0.19045.4412

Summary:
Operation: Detect and Repair 
Operation result: 0x800f081f
Last Successful Step: Remove staged packages completes.
Total Detected Corruption: 2
    CBS Manifest Corruption: 2
    CBS Metadata Corruption: 0
    CSI Manifest Corruption: 0
    CSI Metadata Corruption: 0
    CSI Payload Corruption: 0
Total Repaired Corruption: 1
    CBS Manifest Repaired: 1
    CSI Manifest Repaired: 0
    CSI Payload Repaired: 0
    CSI Store Metadata refreshed: False
Staged Packages:
    CBS Staged packages: 0
    CBS Staged packages removed: 0

資料收集

若您需要 Microsoft 支援,建議您按照使用 TSS 收集部署相關問題的資訊所述步驟來收集資訊。