by WebSurfer
16. June 2012 17:56
Windows Update のトラブル解決でハマったので、また同じ問題で時間をムダにしないよう、どのように解決したかを備忘録として書いておきます。
検証などに使っている Windows Sever 2008 に、最近リリースされた更新プログラムを適用するため Windows Update をかけましたが、以下のエラーメッセージが出てアップデートできませんでした。
"現在サービスが実行されていないため Windows Update で更新プログラムを確認できません。コンピューターの再起動が必要な可能性があります。"
イベントログを見てみると、Microsoft-Windows-CAPI2 のエラーが出ていて、そのエラーメッセージは以下ようになっていました。
"<http://www.download.windowsupdate.com/.../authrootstl.cab> にある自動更新 cab ファイルからサード パーティのルート一覧を抽出できませんでした。エラー: 現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。"
エラーメッセージに "windowsupdate" という文字があったので、絶対これが原因だと思ったのが間違いでした。実は関係なかったのですが・・・
その解決策をググって調べ、[障害情報] crypt32 (Windows XP, Windows Server 2003)、Microsoft-Windows-CAPI2 (Windows Vista 以降) のイベント という記事に書いてあった対応を取ったのですが、CAPI2 のエラーは相変わらず出ますし、Windows Update もできません。
さらにググって調べてみると、Windows Update サービスが動いてないとか、インテルのドライバの問題とか、いろいろ記事が見つかりましたが、それらは関係なかったです。
結局、最終的には、Microsoft の Answers のページ [Win7] Windows Update が起動しません に書いてあったバッチファイルを適用して解決できました。
そのバッチファイルは、以下の操作を行うものです。ということは、SoftwareDistribution フォルダまたは catroot2 フォルダ内のファイルが壊れたか、整合が取れなくなったことが原因だったようです。
-
Windows Update サービスを停止
-
%systemroot% 下の SoftwareDistribution フォルダ名を変更(削除と同じ)
-
Windows Update サービスを再開
-
Background Intelligent Transfer Service を再起動
-
Cryptographic Service を停止
-
%systemroot%\system32 フォルダ下の catroot2 フォルダ名を変更(削除と同じ)
-
Cryptographic Service を再開
これで、Windows Update は動くようになりました。イベントログに出ていた CAPI2 のエラーも Windows Update で更新プログラムが適用された後は出なくなりました。ということは、CAPI2 のエラーは何かの更新プログラムが適用されなかったことが原因だったようです。
でも、まだ問題があって KB2656405 と KB2604121 がどうしても更新できません。最初は Windows Update の不具合と関係しているのかと思っていましたが、.NET Framework 4 自体がどこか壊れていたことが原因だったようです。
コントロールパネルの「プログラムと機能」から、Microsoft .NET Framework 4 Client Profile を選択して[修復]をかけたら解決しました。
ということで、複数の問題があって、最終的に解決するまで丸一日かかってしまいました。オソマツ(汗)