Windows 7のWindows Updateが動かなくなり、手動での確認すらできなくなった

Microsoftの月例パッチ公開から1週間経ち、1台だけ更新していなかったWindows 7マシンを起動してWindows Updateの画面を表示させたら、何か表示がいつもと違う。ウィンドウ上部の画像が緑か黄色なのが通常だが、なぜか赤い。

疑問に思いつつも「更新プログラムの確認」をクリックしたら「現在サービスが実行されていないため、Windows Update で更新プログラムを確認できません。このコンピューターの再起動が必要な可能性があります」とダイアログが表示されて、更新の確認が開始しない。

ネットワークには接続していてInternet ExplorerでWebブラウズはできたので、Microsoft Updateの確認先サーバに何か問題でも起きているのではない限り通信の問題ではないはず。メッセージ内容的にはサーバじゃなくて自分のPC側の問題だろう。

再起動してみたが症状は変わらなかった。Windows Updateのサービスが停止していないか確認したが、動作していた。試しにサービスを再起動しても効果はなかった。

先月に月例パッチを当ててから今までシステムに明示的な変更は加えていない。アンチウイルスソフトファイアウォールの設定が妙なことになっていないか確かめてみた*1けど、どうも違うようだ。

C:\Windows\WindowsUpdate.logを見てみたところ、エラーコード0x80248015が発生している模様。このエラーコードでググってみると「日付が狂っていると起きる」との情報が引っかかる。恐らく「日時情報が狂っていてシステムに支障がでる」ということだろう。

ところがぎっちょんちょん、問題のマシンは日付も時刻も正しいのだ。というか「インターネット時刻サーバーと同期する」を有効にしてntp.jst.mfeed.ad.jpと時刻同期するようにしてあるので、そもそも時刻が狂う可能性は低いはずだ。

いったい何か起きているんだ? 疑問に思いつつWindowsUpdate.logを眺めていたら、妙なログを発見した。

2012-05-19  20:36:47:242     852    940 AU  AU setting next detection timeout to 2012-05-19 11:36:47
2012-05-19  20:36:47:242     852    940 AU  AU setting next sqm report timeout to 2012-05-19 11:36:47

更新の確認ができなくて騒いでいたのは夜で、左側に出力されている日付と時刻が正しい。なのに何やら設定しているタイムアウト時刻が何故か9時間前になっている。9時間の差といえばJSTUTCの差が正にそれなのだが……。

このログは自動更新によって実行されるタスク(AU)のものだ。なので自動更新の処理が失敗していて、その余波で更新の確認ができない状態になっているのだろう、と推測してみた。

そこで試しにWindows Updateの設定を変更してみた。現状では自動更新が有効(更新プログラムを自動的にインストールする)になっているので、これを無効(更新プログラムを確認しない)に設定して、それから「更新プログラムの確認」を実行してみた。

今度は正しく更新を確認できた。未適用のパッチがリストに挙がってきたので更新を適用し、システムを再起動した。

再起動後、Windows Updateの設定を元に戻そうとしたのだが――問題が解決されているのか分からないので、念の為「更新プログラムを確認するが、ダウンロードとインストールを行うかどうかは選択する」にしておいた。一応、手動での更新の確認は動作するようだ。

それにしても何でこんなことになったんだろう?

*1:具体的にはアンチウイルスソフトファイアウォールを終了して「更新プログラムの確認」を実行してみた。