Windowsの自動更新がらみでいろいろノウハウがたまってきたのでメモ。

Windows UpdateやWSUSを使った自動更新はWindowsUpdateAgentで行う。
自動更新の問題=WindowsUpdateAgent(WUA)の問題と考えてよさげ。

WUAの設定方法

レジストリーエントリ
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
以下の値で設定。レジストリーの修正を手で行うのは面倒なので「グループポリシーエディター」を使う。"gpedit.msc"を実行するか、グループ・ポリシー・エディタの使用法を参考にしてMMCにスナップインを追加する。
「ローカルコンピューターポリシー」→「管理用テンプレート」→「Windowsコン
ポーネント」→「WindowsUpdate」
以下で設定可能。

各種データの保存場所

ログ

  • %Windir%\WindowsUpdate.log
  • %Windir%\SoftwareDistribution\ReportingEvents.log

稼動状況の確認

WSUSを設定したのになぜかパッチがあたらない、といった場合は、とりあえずこれらの情報を確認してみる

WUAの稼動ログ

%Windir%\WindowsUpdate.log

各種データの保存場所

%Windir%\\SoftwareDistribution
パッチ適用前のファイルは
%Windir%\\SoftwareDistribution\Download
以下のフォルダーに保存されている

WUAでの自動パッチ適用が失敗してしまう場合

サーバーには接続しているのにパッチがダウンロードできない

ダウンロードしたパッチが壊れているらしく、うまく適用できない。こういった場合、クライアントの情報を消してアップデートサーバーに再接続することで何とかなることが多い。

各種サービスの停止

WUAのバージョンによってサービス名がまちまちだが

  • AutomaticUpdate、または自動更新サービス
  • Background Intelligent Transfer Service、またはBITサービス

これらに近いサービスを探して停止する。最新バージョンのWUAではBackground Intelligent Transfer Serviceは手動実行に
なっていて、通常はサービス稼動していない。

"%Windir%\\SoftwareDistribution"ディレクトリーを削除
心配ならリネームでもいい
アップデートサーバーに接続
以下のコマンドを実行する
> wuauclt.exe /detectnow 

Proxy経由での自動更新

いつのころからか、Proxy経由でのWindowsUpdateができなくなってしまった。WUAのバージョンがあがって、ネット接続に使うコンポーネントがWinHTTPに変更になったせいらしい。古いバージョンではIEのProxy設定をそのまま使ってネット接続していたが、WinHTTPでは独自にProxyを設定しないといけない。

WinHTTPのProxy設定を確認

以下のコマンドを実行

>  proxycfg

デフォルトでは以下のようにProxyが設定されていない

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 :

     直接アクセス (プロキシ サーバーなし)
WinHTTPのProxy設定

IEの設定をそのまま使う場合

> proxycfg -u

自分でProxyを設定したい場合

proxycfg -p <サーバー名> [<バイパス一覧>]

<バイパス一覧>は、Proxyを経由しないホストの一覧
例:
> proxycfg -p 127.0.0.1:8080 192.168.*.*;localhost