Windows updateが 0x80240438 で失敗する場合
数週間前から Windows update が失敗する現象が発生していて少し気になっていたが解決したので記録に残す。
現象の発生状況
問題の PC は、普段は Windows ドメイン (アクティブ ディレクトリ)に参加していて色々な設定がよしなにされている(有無を言わせず強制されている)。インターネットには正常に接続できている。
Windows Update を実行すると「更新サービスに接続できませんでした。。。。」というメッセージが表示され、
イベントビューアでは WindowsUpdateClient がエラー 0x80240438 で失敗している。
解決方法
はじめ、不用意にサービスを停止してしまって Windows update が失敗するのだと思い試行錯誤したが原因は他にあった。
Windows update の参照先が WSUS (Windows Server Update Services) に向いていてそこにアクセスできなくなっていることが問題だったようだ。WSUS はざっくりいうと Windows update のダウンロード元を社内サーバーなどに置くことができるソフト。利用すると会社の PC が一斉にアップデートを実施してインターネットのダウンロード帯域を食いつぶすことを防ぐことができる。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate キー
デフォルト | 変更値 | |
DoNotConnectToWindowsUpdateInternetLocations | 1 | 0 |
WUServer | 空 | |
WUStatusServer | 空 |
グループポリシーかログイン時のスクリプトで上記レジストリが設定されているっぽいが、それを変更できちゃうのはちょっと解せない。がアップデートできたので OK。
まとめると、何らかの方法で WSUS を使う設定がされており、かつ WSUS にアクセスできない状況で今回のエラーが発生していた模様。エラーコード自身は他の原因とも共有されているらしいので WSUS 関連とは限らないっぽい。
大体、このケースにぶち当たる人は個人ユースでは皆無と思われる。なので検索で見つからないのも無理はない、参照ページがなかったらサービス周りを疑い続けたと思うのでとても助かった。
ついでに依存サービス
Windows update はいくつかのサービスに依存しているようで、サービス表示名のサービス名対応は以下のようになる。sc コマンドで BITS などのサービス名の方を使う。
- Background Intelligent Transfer service – BITS
- Windows Update – wuauserv
- Windows Modules Installer – TrustedInstaller