Windows Updateの累積更新プログラムのインストールに失敗(0x800f0989)する – 修復方法3

前回は、Windows Updateの失敗の対策として、コンポーネントストアを修復する方法について説明しました。今回は同じ方法なのですが、Windows Updateサーバーにつなげない場合でも修復する方法の紹介です。

ファイルソースとしてWindows Imageファイルを使う場合の修復

前回に紹介したコンポーネントストアの修復方法は、Windows Imageファイル(isoファイル)を利用してDISMを使う以下の方法でした。

dism /Online /Cleanup-Image /RestoreHealth /LimitAccess /Source:wim:M:\sources\install.wim:3

Windowsのインストールイメージ(isoファイル)がMドライブにマウントされている場合の例となります。

引き続き修復が失敗する場合

ただし、指定したisoイメージに、修復に必要なファイル名とバージョンのファイルが存在しなければ、引き続き以下の結果となり、修復ができません。

C:\>dism /Online /Cleanup-Image /RestoreHealth /LimitAccess /Source:wim:M:\sources\install.wim:3

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19043.1320

[==========================100.0%==========================]
エラー: 0x800f081f

ソース ファイルが見つかりませんでした。
機能の復元に必要なファイルの場所を指定するには、"Source" オプションを使用してください。ソースの場所の指定方法の詳細については、https://go.microsoft.com/fwlink/?LinkId=243077 を参照してください。

DISM ログ ファイルは C:\WINDOWS\Logs\DISM\dism.log にあります

C:\>

今回は、この場合の対処方法についての投稿です。

DISMのログ ファイルを確認する

エラーの詳細を調べるために、DISMのログファイルを確認します。ログファイルの場所は、エラーが発生したときのメッセージに記載されています。

DISM ログ ファイルは C:\WINDOWS\Logs\DISM\dism.log にあります

このファイルの中で、Errorの文字があるところを抽出すると以下となります。

2022-07-31 00:55:43, Info   DISM   DISM Package Manager: PID=13512 TID=26704  Error in operation: source for package or file not found, ResolveSource() unsuccessful. (CBS HRESULT=0x800f081f) - CCbsConUIHandler::Error
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 Failed finalizing changes. - CDISMPackageManager::Internal_Finalize(hr:0x800f081f)
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 Failed processing package changes with session option CbsSessionOptionRepairStoreCorruption - CDISMPackageManager::RestoreHealth(hr:0x800f081f)
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 Failed to restore the image health. - CPackageManagerCLIHandler::ProcessCmdLine_CleanupImage(hr:0x800f081f)
2022-07-31 00:55:43, Error DISM   DISM Package Manager: PID=13512 TID=24568 Failed while processing command cleanup-image. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f081f)
2022-07-31 00:55:43, Info  DISM   DISM Package Manager: PID=13512 TID=24568 Further logs for online package and feature related operations can be found at %WINDIR%\logs\CBS\cbs.log - CPackageManagerCLIHandler::ExecuteCmdLine

一行目にエラーコードが 0x800f081f と記録されており、コマンドを実行したときに表示されたエラーコード(エラー: 0x800f081f)と一致します。ログファイルからこの抽出した部分が該当のエラーであることがわかります。

エラーログからは、CCbsConUIHandler / GetCbsErrorMsg / CbsSessionOptionRepairStoreCorruption のようにCbsという文字が読み取れます。Cbsに関連するエラーのようです。

さらなるエラーの詳細は、%WINDIR%\logs\CBS\cbs.log にありそうであることが読み取れます。

問題となっているファイルを特定する

そこで、%WINDIR%\logs\CBS\cbs.log ファイルを確認します。

このファイルの中で、Errorの文字があるところを抽出すると以下となります。

2022-07-31 00:55:07, Info  CBS    Appl:LCU package and revision compare set to explicit
2022-07-31 00:55:07, Info  CBS    Package Format: PSFX
2022-07-31 00:55:07, Info  CBS    Repr: Staged package check completes
2022-07-31 00:55:07, Info  CBS    Failed to GetFile from WIM sandbox process [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2022-07-31 00:55:07, Error CBS    Failed to look for file WinSxS\wow64_microsoft-windows-ncryptprov-dll_31bf3856ad364e35_10.0.19041.1202_none_9d8aa8357dab8196\r\ncryptprov.dll in some alternate sources [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2022-07-31 00:55:07, Info  CBS    Repr: Not able to find replacement file for component wow64_microsoft-windows-ncryptprov-dll_31bf3856ad364e35_10.0.19041.1202_none_9d8aa8357dab8196, file r\ncryptprov.dll from any local source

必要としているファイルは、コンポーネント wow64_microsoft-windows-ncryptprov-dll_31bf3856ad364e35_10.0.19041.1202_none_9d8aa8357dab8196ncryptprov.dll であることがわかります。

このファイルを含むWindowsイメージのisoファイルがあれば修復できることになります。

必要としているファイルのisoファイルの特定

必要としているファイルは、コンポーネント wow64_microsoft-windows-ncryptprov-dll_31bf3856ad364e35_10.0.19041.1202_none_9d8aa8357dab8196ncryptprov.dll であることがわかりました。

ここから、必要とするWindows イメージのisoファイルを特定していきます。

ファイル名にWindowsのビルドバージョンである10.0.19041.1202が含まれています。

そこで、19041.1202 をWEB検索します。すると、マイクロソフトがリリースした、このバージョンの更新プログラムを見つけることができます。

2021 年 9 月 1 日 — KB5005101 (OS ビルド 19041.1202、19042.1202、および 19043.1202)

21年9月1日にリリースされているので、最低限、この更新が反映されたWindowsのisoイメージである必要があります。

Visual Studio Subscription (旧MSDN Subscription)

Visual Studio Subscription (旧MSDN Subscription) に加入していると、開発時・検証時に開発環境・検証環境の作成に必要となる、Windowsのisoイメージ、Visual Studioなどが以下のマイクロソフトのサイトからダウンロードできます。

https://my.visualstudio.com/Downloads/Featured

Visual Studio Subscriptionには、個人の開発者だと加入していることは少ないかもしれません。しかし、業務でWindowsのソフトウェアを開発している開発者の場合は、開発の作業効率が上がるため、加入していることが多いと思います。

このサイトからはWindows のisoイメージをダウンロードすることができます。それも、Windows が製品化されたときの初版だけではありません。このサイトには毎月のセキュリティ更新を反映したWindowsのisoイメージが、毎月追加されており、それらもダウンロードできます。

例えば、Windows 10 21H1 のWindowsのisoイメージであれば、2022年9月3日時点で以下のisoイメージが用意されています。

  • Windows 10 (consumer editions), version 21H1
  • Windows 10 (consumer editions), version 21H1 (updated May 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Jun 2021)
  • Windows 10 (consumer editions), version 21H1 (updated July 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Aug 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Sep 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Oct 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Nov 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Dec 2021)
  • Windows 10 (consumer editions), version 21H1 (updated Jan 2022)
  • Windows 10 (consumer editions), version 21H1 (updated Feb 2022)
  • Windows 10 (consumer editions), version 21H1 (updated March 2022)
  • Windows 10 (consumer editions), version 21H1 (updated April 2022)
  • Windows 10 (consumer editions), version 21H1 (updated May 2022)
  • Windows 10 (consumer editions), version 21H1 (updated June 2022)
  • Windows 10 (consumer editions), version 21H1 (updated July 2022)
  • Windows 10 (consumer editions), version 21H1 (updated Aug 2022)

Windows Updateでは、毎月の第2火曜日(米国時間)に、セキュリティ更新を含む「品質更新プログラム」がリリースされます。それを反映したisoイメージが、毎月リリースされているのがわかると思います。

上記の修復エラーの例では、19041.1202 の品質更新プログラムが2021年9月にりりーすされていました。そのため修復では2021年9月1日直後のWindows 10 21H1(19043) のイメージである「2021年9月更新版」、もしくは、「2021年10月更新版」のisoイメージを使います。最新の「2022年8月更新」を使わないことには理由があります。最新のisoファイルを使うと、その中に含まれているファイルは、バージョンがさらに新しく、修復に必要なファイルと異なってしまう可能性がるからです。

使用するisoファイルが決まれは、あとは修復を実行するのみです。前回と同様にコマンドを実行すれば、今度は修復が完了します。

dism /Online /Cleanup-Image /RestoreHealth /LimitAccess /Source:wim:M:\sources\install.wim:3

上記は、Windowsのインストールイメージ(isoファイル)がMドライブにマウントされている場合の例となります。

また、二つのisoファイルのどちらに必要なファイルが入っているかわからない場合は、以下のようにSourceを二つ指定することもできます。

dism /Online /Cleanup-Image /RestoreHealth /LimitAccess /Source:wim:M:\sources\install.wim:3 /Source:wim:N:\sources\install.wim:3

上記は、二つのWindowsのインストールイメージ(isoファイル)がMドライブとNドライブにマウントされている場合の例となります。二つ指定した場合は、どちらかのisoファイルに必要なファイルが存在すれば修復は成功します。

私が遭遇した、Windows Updateに接続できないPCでは、上記の方法で使用すべきWindowsイメージのisoファイルを特定し、それを使って修復することができました。

コンポーネントストアの修復が成功した後は、月例のセキュリティ更新プログラムも問題なく適用できるようになりました。


今回は、マイクロソフトのWindows Updateを使ってコンポーネントストアを修復できないPC環境で、過去のOSイメージを使ってコンポーネントストアを修復する方法に関する投稿でした。

コメントを残す