Windows Update が失敗してたので対処(会社にて。プロキシに関する設定の問題っぽい)

毛利です。

会社では1ヶ月に1回「セキュリティチェック」という名目で Windows Update やウィルススキャン(全ファイル)の結果を報告せよ、というのがある。

自動更新(10:00)にしてるけど念のため、ということで手動で Windows Update してみたら、なぜか更新対象がわんさか出てきた(笑)
恐らく以下の要因。

  • あるパッチで何らかのエラーが発生していて、それ以降が入ってない
  • 最近「Visual C++ 2005 Express Edition」「Office 2007」をインストールしたのでそれ絡み…?

ちなみに会社のPCは Windows XP Professional(32bit)。

まず、手動で Windows Update

24個のうち、5個がエラー。うーん、なんで?

エラーとなったパッチを手動でインストール(恐らく後述の手順をやれば不要)

しょうがないので、KBXXXXXXX などでググって出てきたパッチを手動ダウンロードでインストール。


しかしながら、最後の「SQLServer2005SP4-KB2463332-x86-JPN.exe」については、うまくいかない。
実行して特にエラーなく終了するのだけど、念の為に Windows Update をやってみるとまた出てくる。
手動実行後だから、もう一度 Windows Update から実行するとうまくいくかな?と思って実行するもダメ。

なんでやーとなってエラーコードを確認。
ちなみに最初に確認しなかったのは、エラーコードの確認の仕方を知らなかったため。。
(後述の手順の、赤の×印ではなく左側のリンクの方をクリックしてた)
パッチの番号でググれば分かるだろと思って調べなかった。

手動インストールしてもダメな子のエラーコードを確認

Windows Update で更新プログラムのインストールが失敗した場合にエラー コードを確認する方法

リンクではなく赤の×印をクリックするのがミソ。

Windows Update で更新プログラムのインストールが失敗した場合にエラー コードを確認する方法

全部エラーコード"0x8024402C"で失敗。"0x8024402C"でググるといくつか見つかる。

原因は5つとも同じなのに、4つは個別のパッチでOKで、1つだけエラー。やっぱりよく分からない。

ググって出てきた手順を試して3つ目がヒット

こんな感じでした。

regsvr32 wups.dll, regsvr32 wuaueng.dll

Windows Update でエラー番号 0x80070424 が表示される場合の対処方法

効かない。。。(ていうか見直したら "0x80070424" の対処だし!)

proxycfg -u

1.DOSプロンプトから「proxycfg -u」と実行※
2.再起動
3.再度Windows Update

効いた!!
(OS再起動はせず、net (stop|start) wuauserv で対処)

C:\Documents and Settings\[username]>proxycfg
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

現在の WinHTTP プロキシ設定:
HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\
WinHttpSettings :

直接アクセス (プロキシ サーバーなし)

C:\Documents and Settings\[username]>proxycfg -u
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

更新されたプロキシ設定
現在の WinHTTP プロキシ設定:
HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\
WinHttpSettings :

プロキシ サーバー: ***-proxy.gw.nic.**********.com:8080
バイパス一覧 : *.local;172.*;192.168.*

C:\Documents and Settings\[username]>net stop wuauserv
Automatic Updates サービスを停止中です.
Automatic Updates サービスは正常に停止されました。


C:\Documents and Settings\[username]>net start wuauserv
Automatic Updates サービスを開始します.
Automatic Updates サービスは正常に開始されました。

※プロキシサーバーの部分は伏せてます


で、Window Update を再実行でうまくいった。

参考

Windows Update (0x80072EFD, 0x8024402C, 0x80240030, 0x8024502d) - よそ行き顔で

Windows Update で失敗 − System Insider − @IT

簡単にまとめると、
・以前のWindows Update(と自動更新)はWininetを使用する
・現在のWindows Updateと自動更新はWinhttpを使用する
と、使用しているAPIに違いがある。で、Microsoft的には、自動更新のようなサービスとして動作するインターネットアプリケーションはWininetでは無くWinhttpを使うよう推奨している

なるほど…な感じだけど、改悪のような気はする。
「Winhttpを使うよう推奨」は何らかの理由があるんだろうけど、それがダメならWininetでトライする、とか出来なかったのかなぁ。


いじょ。