サーバーが更新できない… Windows Update エラー 0x800F0922 を消すまでの話
Windows Server 2012 R2 のうち1台が、何をどうやってもアップデートできなくなった…。
失敗コードは 0x800F0922。 何を試しても 0x800F0922。
報告され続けるエラー。 再起動にクレームする利用部門。
マイクロソフト様のご指導を戴いてもなお更新できないサーバーに悩むこと3か月、最終的に極々限られた状況にあてはまることがわかり、やっと解決したのでブログを置いておきます。
適応事例
このブログは、下記の条件にあてはまる場合に奏功します。
- Azure仮想マシンである
- 下記の一般的な事項を全部試した後でも、アップデートが失敗し続けて絶対に治らない
- 最新のWindows Update エージェントをスタンドアロンでインストールする
- 問題の更新プログラムを探し、スタンドアロンでインストールする
- テンポラリファイル (C:\Windows\Temp) を全部消す
- SFCコマンドで修復する
- DISMコマンドで修復する
- Windows Update コンポーネントをリセットする
なんか、条件の1行目を見た途端に「あぁ~…」となりそうですが、解決したからまぁいいです。
Azure VMじゃない御方がこのエントリを見ていたら、2行目以降を頑張ってお試しください。
原因と対応方法
Azureの Windows VM では特定のエージェントサービスが稼働しており、そのサービスに関する某レジストリが「何らかの理由で」破損すると、今回のサーバーのように Windows Update できなくなります。
これは純粋にマイクロソフト環境の問題なので、こんなブログでどーこー言わなくても、ちょうど先日新しいドキュメントが公開されていました。(自分のような "踏んじゃったユーザー" が続出したからだろうね!)
こちらをご覧くださいませ↓
https://blogs.technet.microsoft.com/jpaztech/2017/05/16/troubleshooting-patch-installation-failure/
といって終わるのもめんどーくさいので、リンク先を読むのが面倒な人向けに(まさに自分のことなんだがw)手順を簡単に抜粋します。
- Azure ゲストエージェントのインストーラーをダウンロードしておく
http://go.microsoft.com/fwlink/?LinkID=394789&clcid=0x409 - c:\Windows\Logs\CBS 以下のログを検索し(行数が多いのでgrep推奨)、下記の記載を見つける
EventAITrace:Provider Microsoft-WindowsAzure-Diagnostics (中略) is missing channels under the channelreferances registry key. 中略の部分には、レジストリキー値が入ります。何種類かある場合はすべて控えておきます。
- レジストリエディタで下記パスを開き、
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers
その下にあるキー群から先ほど控えたキー値を見つけ、削除する - 手順1で取得した Azure ゲストエージェントを再インストールする(再起動不要)
- Windows Update してみる
すると……
ナオッター!
自分は最後の手順のとき、Windows Update ではなく 更新プログラムのスタンドアロンインストールを試しましたが、まぁ公式ドキュメントに情報もあることだし、いきなりアップデートを検索しても大丈夫なんだろうなと思います。
スポンサー