TechNote

事務屋のおぼえがき

winhttp proxyの設定とその周辺事情

最近winhttpコマンドをよく使うので、ここらで一度まとめておく。


1.winhttpってなに?

言葉の定義に関しては面倒なので抜粋。it用語辞典e-wordsより。


WindowsにはもともとWinINETという通信コンポーネントがあり、HTTPやFTPなどインターネットで標準的に使われるプロトコルをサポートしていた。WinINETはクライアントを想定して開発されたものだったため、サーバとしての利用も考慮したHTTP専用のコンポーネントとしてWinHTTPが開発された。クライアントとして利用することもでき、Windows XPなどはWindows UpdateにアクセスするのにWinHTTPを利用している。

要するに、プロキシ設定時には下記の二種類の設定があるから注意しろということ。

(1)InternetExplorer

「インターネットオプション」→「接続」タブ→「LANの設定」→「プロキシサーバー」での設定

(2)コマンドプロンプト

コマンドプロンプトのwinhttpコマンドによる設定

2.winhttpとieのproxy設定の違い

上記で二種類挙げたが、上記(1)で設定したことは、InternetExplorerやその他のブラウザ(ChromeFirefoxなど)のみに反映される。そして(2)で設定したことは、WindowsUpdate、Office365、その他オンラインアクティベート時などの通信で使用される。またpowershellでps.outlook.comへ接続する場合なども後者。

こういった違いを頭の中に入れておかないと、ieのプロキシ設定だけ済ませた状態で、「officeのオンライン認証が通らない!なぜ?」てことになってしまうので注意が必要。

3.これだけ知っとけばいいwinhttpコマンド

※下記のうち、設定変更系は全て管理者権限でコマンドプロンプトを起動して実行しないと権限の問題で設定変更できない。

現在のwinhttpのプロキシ設定状況を見る

netsh winhttp show proxy

ieのプロキシ設定をwinhttp proxyにも踏襲する。

netsh winhttp import proxy source=ie

winhttp proxy設定をリセットする。

netsh winhttp reset proxy

winhttp proxy設定を手動で行う。

netsh winhttp set proxy proxy-server="xxx.xxx.xxx.xxx:8080" bypass-list="yyy.yyy.yyy.*;"