Windows Updateでエラー。ダウンロードできるのにインストールできない件

XP SP3をインストールしたあと、Windows のUpdateをMicrosoft Update更新プログラムでインストールしようとすると、『コンピュータの問題が原因で、更新プログラムをダウンロードまたはインストールできません』のメッセージ。困った。ダウンロード処理は成功してるのに更新プログラムのインストールが失敗。この状態では、インストール未完了のため更新履歴にも残らずブラウザ画面では詳細も確認できない。

まずはログをチェック。ログファイルは『C:\WINDOWS\Windows Update.log』。


24 Misc =========== Logging initialized (build: 7.0.6000.381, tz: +0900) ===========
2008-09-20 22:25:57:980 3380 d24 Misc = Process: C:\WINDOWS\system32\wuauclt.exe
2008-09-20 22:25:57:980 3380 d24 AUClnt FATAL: Error: 0x80004002.
wuauclt handler: failed to spawn COM server
2008-09-20 22:25:57:980 676 b2c Handler FATAL: 0x80004002: ERROR:
Remote update handler container process created (PID: 3380), but exited before signaling event
2008-09-20 22:25:58:464 676 b2c Agent * WARNING: Exit code = 0x80004002
2008-09-20 22:25:58:464 676 b2c Agent *********
2008-09-20 22:25:58:464 676 b2c Agent ** END ** Agent:
Installing updates [CallerId = WindowsUpdate]
2008-09-20 22:25:58:464 676 b2c Agent *************
2008-09-20 22:25:58:464 676 b2c Agent
WARNING: WU client failed installing updates with error 0x80004002
2008-09-20 22:25:58:480 3896 cc COMAPI
>>-- RESUMED -- COMAPI: Install [ClientId = WindowsUpdate]
2008-09-20 22:25:58:480 3896 cc COMAPI - Install call failed
2008-09-20 22:25:58:480 3896 cc COMAPI - Reboot required = No
2008-09-20 22:25:58:480 3896 cc COMAPI - WARNING:
Exit code = 0x80240FFF; Call error code = 0x80004002
2008-09-20 22:25:58:480 3896 cc COMAPI ---------
2008-09-20 22:25:58:480 3896 cc COMAPI -- END --
COMAPI: Install [ClientId = WindowsUpdate]
2008-09-20 22:25:58:480 3896 cc COMAPI -------------

この中で原因と疑われる行は以下の1行。

2008-09-20	22:25:57:980	3380	d24	AUClnt	FATAL: Error: 
0x80004002. wuauclt handler: failed to spawn COM server

Error と記録された 0x80004002エラーコードを、マイクロソフトのサポート技術情報から検索する。コマンド使いじゃない人には厳しそうな内容。。


Windowsupdate.log ファイル:
致命的: エージェントにインターフェイス ポインタを取得するのに、 hr 失敗されるには。= 80040154
 ---- 中略
 %Windir%\system32\net.exe ストップ ビット
 %Windir%\system32\net.exe停止 wuauserv
 ---- 中略
 %Windir%\system32\regsvr32.exe%windir%\system32\wuweb.dll
 %Windir%\system32\net.exe開始ビット
 %Windir%\system32\net.exe開始 wuauserv

参考:Microsoft 更新 の Systems Management Server 2003 インベントリ ツール を使用すると、エラー メッセージとスキャンが「 0x80040154」に失敗します。(From:マイクロソフトサポート技術情報)。英文のサイト(右側のサポート技術情報の翻訳 英語usに)を見た方がわかりやすいかも。regsvr32 とはCOMコンポーネントをシステムに登録するために使う、Windows付属のコンソールプログラム。コンソールプログラムなのでコマンドプロンプトなどで実行する。

とりあえずこの不具合は Windows Update が使用する必要な .dll ファイルが正しく登録されていないのが原因で発生しているってことらしい。

Microsoft UpdateプログラムのWindows Update Error: 0x80004002の解決方法だが、コマンドプロンプトから下のコマンドを打ち込んで動かして.dll を追加してあげればOK。


%Windir%\system32\net.exe stop bits
%Windir%\system32\net.exe stop wuauserv
%Windir%\system32\regsvr32.exe %Windir%\system32\atl.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\jscript.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\msxml3.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\softpub.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wuapi.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wuaueng.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wuaueng1.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wucltui.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wups.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wups2.dll
%Windir%\system32\regsvr32.exe %Windir%\system32\wuweb.dll
%Windir%\system32\net.exe start bits
%Windir%\system32\net.exe start wuauserv

エディタで訂正して全部一度にコピペすると楽に終了。成功メッセージ(アラートのようだ・・・)の窓が大量に開くので、これを閉じて終了。

上下2つの net.exe はサービス関連のnetコマンド(管理者権限のユーザーがいればAdministratorのパスワード再設定も可能)で、そのサブコマンドとそれに対するパラメータだが、この場合はどっちでもいいような気もする。これでWindows Update完了。疲れた・・・。他にもハマった人いるんだろうなぁ。。

その後の検索にて、MSのこんな発表を発見。


Windows XP インストールを修復した後、Windows Update、Microsoft Update、または自動更新で更新プログラムが正常にインストールされない

文書番号 : 943144
最終更新日 : 2007年10月5日
リビジョン : 2.1

Microsoftが7月と8月にWindows Updateの新しい実行ファイルを「密かにインストール」したせいで、Windows XPの修復機能に問題が発生していたということらしい。これってどうなの。

Windows XPのCDを使ってシステムを修復すると、PC内のWindows Updateを含むすべてのシステムファイルが、CD内に含まれた旧来のXPのファイルに置き換えられてしまう。そしてCDに収録されたXPは、最新の Windows Updateに含まれているwups2.dllというファイルに対応していない。このため、Windows Updateによる修復がうまく行えなくなる。サポートページでは、この問題を解決するためにwups2.dllをシステムに登録する方法も説明している。regsvr32 %windir%\system32\wups2.dll だけでも直るということですね。