Windows 製品の更新プログラム (KB) のインストールの失敗 … ログ分析の進め方

本記事の最新版をフォーラムにて紹介しております。

記事の改訂が含まれる場合がございますので、フォーラムの情報を参照してください。
フォーラムへのリンク


こんにちは、Windows プラットフォームサポート Setup チームの宮崎です。

本ブログ内の ”Windows 製品の更新プログラム (KB) のインストールの失敗 … 一般的な対処策” の記事で OS の更新プログラムの適用に失敗する際の一般的な対処策をお伝えしましたが、事象によっては解決せず、ログの調査に進む必要がございます。本記事ではログの分析調査の準備と進め方についてご紹介いたします。

ログの調査方法

スタンドアロンインストーラーでインストールに失敗するところまでが切り分けられている場合、調査対象とするログは主に以下になります。

  • Setup イベント ログ
  • CBS ログ (C:\Windows\Logs\CBS 配下のファイル)
  • (System イベント ログ)
  • (Application イベント ログ)

基本的には Setup イベントログと CBS ログを参照しながら、その後、事象に応じて他の情報を参照していく流れとなります。System イベント ログや Application イベント ログ等、他の情報は事象の前後関係や裏付けをとるための補足資料として参照する場合がございます。

Setup イベントログでイベント ID 3 のイベントを検索すると、以下のようにエラーコードが記録された失敗のイベントが確認できエラーの日時や理由がわかります。
(10 進数で表示される場合は 16 進数に変換します。 例えば 2149842967 は 80240017 となります)

- 例 1.
ログの名前: Setup
ソース: Microsoft-Windows-Servicing
イベント ID: 3
レベル: 情報
説明: パッケージ KBxxxxxxx を状態 インストール済み に変更できませんでした。状態: 0xXXXXXXXX。

- 例 2.
ログの名前: Setup
ソース: Microsoft-Windows-WUSA
イベント ID: 3
レベル: エラー
説明: エラー XXXXXXXXXX "" が原因で Windows の更新プログラム をインストールできませんでした (コマンド ライン: ""C:\WINDOWS\system32\wusa.exe" "C:\********.msu" ")

エラーコードをマイクロソフトの公式ページから検索し、エラーの内容を確認します。

以下は更新プログラムのインストールで発生しやすい代表的なエラーコードです。

0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT The component store has been corrupted.
0x800F081F CBS_E_SOURCE_MISSING source for package or file not found, ResolveSource() unsuccessful
0x80070020 ERROR_SHARING_VIOLATION The process cannot access the file because it is being used by another process.
0x80070005 ERROR_ACCESS_DENIED Access is denied.
0x800705B4 ERROR_TIMEOUT This operation returned because the timeout period expired.
0x800f0816 CBS_E_DPX_JOB_STATE_SAVED job state for DPX has been saved
0x80070422 ERROR_SERVICE_DISABLED The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
0x80240017 WU_E_NOT_APPLICABLE Operation was not performed because there are no applicable updates.
0x80070002 ERROR_FILE_NOT_FOUND The system cannot find the file specified.
0x80070003 ERROR_PATH_NOT_FOUND The system cannot find the path specified.
0x80004005 E_FAIL The operation failed
0x80070643 ERROR_INSTALL_FAILURE Fatal error during installation.
0x80070057 ERROR_INVALID_PARAMETER The parameter is incorrect.

エラーコードから以下のようにおおよその事象の見立てを行っていきます。

  • 0x80073712 (ERROR_SXS_COMPONENT_STORE_CORRUPT) や 0x800F081F (CBS_E_SOURCE_MISSING) であれば、必要なコンポーネント ストアの破損やパッケージの不足であることから、OS 内部の不整合であることが疑われます。
  • 0x80070020 (ERROR_SHARING_VIOLATION) や 0x80070005 (ERROR_ACCESS_DENIED) であれば、正しくアクセスできない状況にあります。サードパーティー製品による影響があった 場合、サードパーティー製品の無効化やアンインストールを検討する必要があります。
  • 0x800705B4 (ERROR_TIMEOUT) や 0x800f0816 (CBS_E_DPX_JOB_STATE_SAVED) であれば、タイムアウトやインストール処理のタイミングが直接の事象となります。複数回のリトライで改善されないか、リソース・他のソフトウェアの影響により動作影響がないか確認が必要となります
  • 0x80070422 (ERROR_SERVICE_DISABLED) であれば、本来既定で有効となっているサービスを無効に設定していないか確認が必要となります
  • 0x80240017 (WU_E_NOT_APPLICABLE) であれば、更新プログラムがそもそも適用可能な対象であるかの確認が必要となります。また場合によっては、更新予定のモジュールがすでにすべて新しいものに置き換えられていて、適用不要となっている場合もこのエラーコードが記録されます。
  • 0x80004005 (E_FAIL) のようにエラーコードからだけでは解釈が難しい場合、詳細な調査が必要となります。

次に CBS ログから、事象の発生日時前後でエラーのレコードを調査していきます。まずは最新の情報が記録されている CBS.log から ", Error" を含むレコードを抽出いただくと素早くご確認いただけます。

2017-04-25 22:38:33 , Error CSI 00000002 (F) Logged @2017/3/25:13:38:33.230 : [ml:322{161},l:320{160}]"EventAITrace:Provider Microsoft-WindowsAzure-Diagnostics{{9148c98f-152c-44d3-a496-26350c475d74}} is missing channels under the channelreferances registry key. " [gle=0x80004005]

抽出されたレコードの意味やその前後関係、公開技術情報をキーワードから検索していきます。上記レコードからは何等かのレジストリ キーの不整合であることがわかり、以下 URL に記載の問題に該当します。

Windows 仮想マシンにて更新プログラムの適用に失敗する場合のトラブルシュート
https://blogs.technet.microsoft.com/jpaztech/2017/05/16/troubleshooting-patch-installation-failure/

本記事ですべてのエラーコードやログの分析方法について紹介しかねますが、上記の流れを参考に分析を進めていただくことでお客様ご自身でも問題が解決できる場合がありますので参考にしてください。

補足. Windows Update のログは調査に使われないのか

ReportingEvents.log や Windowsupdate.log、C:\Windows\Logs\WindowsUpdate\*.etl は Windows Update の主に検出、ダウンロードする部分を担うログ ファイルとなります。スタンドアロンインストーラーでのインストールの場合には、検出やダウンロードの処理が割愛されますので、Setup イベントログや CBS ログからの調査で進めることができ、Windows Update のログは補足資料として用います。

解決しない場合

サポート サービスで分析支援を行っておりますが、ログ分析には一定の調査期間を要します。また事象によっては数日の調査で解決することもあれば、追加の採取や切り分けの実施を繰り返し 1 か月程度の調査期間を経ても解決に至らないことがあります。

対処策が得られない場合やトラブルに至った端末が一部である場合、現象の回避を優先した再構築の対応が妥当な場合がございます。ただし、業務機能の再構築が運用上の負荷が高い対応となり特にサーバー マシンでは採択が難しい傾向があります。その場合、弊社では再構築を実施する前にインプレースアップグレードによる上書きインストールを提案しております。

インプレース アップグレードとは OS の構成やユーザーがインストールしたアプリケーションやデータなどを可能な限り残し、OS 部分のみを上書きインストールする方法です。アップグレードと表記いたしておりますがこのような事象でインプレースアップグレードを行う目的は OS 部分の上書きとなりますので、上位バージョンへ更新するためのアップグレード作業ではなく、お使いいただいてる OS と同バージョンのメディアでアップグレード作業を行うことで修復を行います。再構築とは異なり可能な限り構成やデータを引継ぎますので、新規に OS を入れ直すよりは迅速に問題の解決を進めることができます。

具体的な手順は以下を参考にしてください。以下は Windows 10 を例としておりますが、Windows 10 以前のクライアント OS やサーバー OS でも同バージョンのインストール メディアでアップグレード操作を行うことで対応が可能です。

Media Creation Tool から Windows 10 の最新バージョンへアップデートする方法
https://sway.office.com/icArYOWCI87zzyul

注意事項

問題の原因によっては、インプレース アップグレード自体が失敗するケースも存在し、状況によっては OS の起動が出来なくなるケースもございますため、インプレース アップグレードを実施する前に、重要なデータはバックアップしておくことを強くお勧めいたします。また、インストール済みの更新プログラムは削除されますので、再度インストールが必要となります。 アプリケーションや設定によっては、 再インストールや再設定が必要となる場合がございます。 インプレース アップグレード自体が失敗する、あるいはインプレース アップグレードは成功したが、問題が解消しないという場合には、改めて新規に OS を再インストールすることをご検討ください。

サポート サービスにお問合せいただく前に

事象について弊社のサポート サービスやパートナー様にご相談いただく前に、以下の情報が把握できていますと、運用状況に対しての現実的な対処方法や追加の資料採取の検討が行えます。ぜひお問合せ前にご確認いただくことを推奨いたします。

  • エラーとなる更新プログラムの KB 番号
  • 事象が再現するインストール方法
    • スタンドアロンインストーラーか Windows Update か
    • WSUS/SCCM 等の配信のインフラがあるか
  • エラーに至るまでの画面遷移(スクリーンショット等)
    • 例 1. スタンドアロンインストーラーの実行中にエラーが表示される
    • 例 2. インストール後の再起動中に「Windows 更新プログラムを構成できませんでした 変更を元に戻しています」と表示され元に戻る
    • 例 3. スタンドアロンインストーラーではインストールに成功するが、Windows Update ではダウンロードの完了まで至らない
  • 発生規模
    • 何台中何台が失敗しているか、成功しているマシンがあるか
    • 複数台発生する場合、エラーコードや画面遷移は同様か
    • 利用用途、ソフトウェア、ハードウェアなどの差異はあるか

トラブルシューティングにあたって“Windows 製品の更新プログラム (KB) のインストールの失敗 … よくある質問”を必要に応じてご参照ください。

本記事が皆様の運用の一助となりましたら誠に幸いです。

本記事は Windows 製品の更新失敗時の進め方 より紹介しております。

本記事におきましては予告なく内容を変更させていただくことがあります。今後、情報のアップデートがあれば、本ブログにて引き続き情報を提供いたします。

参考情報. エラーコードの解釈の方法

エラーコードの解釈の方法については以下の URL をご確認ください。

2.1 HRESULT
https://msdn.microsoft.com/en-us/library/cc231198.aspx

Win32 Error Codes
https://msdn.microsoft.com/library/cc231199.aspx

例えば、先頭の桁が "8007" は Win32 エラーコードとなります。この時、末尾 4 桁が合致するエラーコードを Win32 Error Codes から検索します。

その他には、例えば "800f" は Facility 値が 15 (0xf) となり FACILITY_SETUPAPI エラー、また "8024" は 36 (0x24) となり FACILITY_WINDOWSUPDATE のエラーと分類されます。Win32 エラーコード以外のエラーコードについて、残念ながらすべての情報公開はいたしておりませんが、本記事のように個別に紹介いたしておりますので、弊社の技術情報を検索、確認いただけましたら幸いです。