WinHTTP proxyの設定方法まとめ | noramikeの雑記帳

WinHTTP proxyの設定方法まとめ



先日勤務先で、“WindowsUpdateでパッチがダウンロードされない’という現象に遭遇して大変困った!、という事態に陥ったので、その時に調べた事についてまとめてみおくことに。


実は、WindowsにはProxyが2種類あるんです。
1つは、Internet Exploreの「インターネットオプション」→「ツール」→「接続」タブ→「LANの設定」で設定する項目で、ユーザーがブラウザやアプリケーションソフトを使ってインターネット接続する際に使用するもの。
もう一つは WinHTTP Proxyと呼ばれる、GUIでの設定項目はないが、内部的に設定値を持っている項目で、主にWindowsUpdateがMicrosoftのサイトからパッチをダウンロードする際に使用するもの。

特にネットワーク規模の大きな企業や学校などのネットワークからインターネット接続する場合は、Proxy設定が必要な場合が殆どなので、こういったネットワークに接続されているPCでWindowsUpdateが正常に動いているにも関わらずパッチがダウンロード出来ないのは、間違いなくWinHTTPの設定が環境と一致していない(直接アクセス)状態になっているのが原因です。

なので、このような症状に遭遇した場合は、これから書く方法でWinHTTPの設定を 直接アクセス ⇒ プロキシー接続 に変更するすることで解決出来ます。



WinHTTPの変更方法(プロキシー経由の接続にする)
<WindowsXPの場合>
まずはInternet Explorerでインターネット接続が出来ていることを確認します。
※必ずInternet Exploreで設定の変更を行ってください。

次に、コマンド プロンプトを開いて、
proxycfg -u 
とタイプしEnterを押します。

-u をオプションに付けると、Internet ExploreのProxy設定をWinHTTPにインポートして設定することができます。
(通常はこの方法が一番確実です。)

これで、設定がプロキシー接続に変更され、WindowsUpdateがパッチのダウンロードが開始されます。


なお、WinTTPの状態確認したい場合は、
proxycfg
とタイプしEnterキーを押します。

また、直接アクセスに変更したい場合は、
proxycfg -d 
とタイプしEnterキーを押します。

あまり使わないと思いますが、全ての設定値を手動で行う場合は、
proxycfg -p <サーバー名> <バイパス一覧>
で指定できます。
 ※バイパス一覧は ; で区切って複数指定できます。
  ローカルネットワークを全てバイパスする場合は
   local
  と指定します。 


<Windows Vista/7の場合>
Vista/7の場合も同じように、まずはInternet Explorerでインターネット接続が出来ていることを確認します。
※こちらも同じで、必ずInternet Exploreで設定の変更を行ってください。


次に、コマンド プロンプトを開いて、
netsh winhttp import proxy source=ie
とタイプしEnterを押します。
 ※Windows Vista/7ではproxycfgコマンドがなくなり、
  netshコマンドに統合されたようです。

これで、設定がプロキシー接続に変更され、WindowsUpdateがパッチのダウンロードが開始されます。


なお、WinTTPの状態確認したい場合は、
netsh winhttp show proxy
とタイプしEnterキーを押します。

また、直接アクセスに変更したい場合は、
netsh winhttp reset proxy 
とタイプしEnterキーを押します。

こちらもあはり使う機会は少ないと思いますが、全ての設定値を手動で行う場合は、
netsh winhttp set proxy proxy-server="プロキシサーバ名:ポート番号"  bypass-list="バイパスリスト"
で指定できます。
 ※バイパス一覧は ; で区切って複数指定できます。
  ローカルネットワークを全てバイパスする場合は
   local
  と指定します。 


ここまで書いた方法では、全てProxyの設定値をInternet Exploreからインポートしていますが、インポートした後にInternet ExploreのProxy設定を変更しても、WinHTTPの設定は変わりませんので、都度手動で変更を行う必要があります。

また、これらのコマンドは管理者権限を持ったユーザーで実行する必要があります。
もしログオンしているユーザーが管理者権限を持っているか判らない、という場合は、コマンドプロンプトを起動する時に、右クリックで「管理者として実行」を選んで実行すれば、間違いありませんので、不安なときはこの方法を取りましょう。