※本記事は Microsoft 社員によって公開されております。
こんにちは。日本マイクロソフト Microsoft Edge / Internet Explorer サポート チームです。
これまで Japan IE Support Team Blog にて公開していた記事のうち、プロキシ関連の記事を整理しました。
長い記事になってしまうため、下記の 4 つの記事に分けています。
ローカル エリア ネットワーク (LAN) の設定について
(今回の記事) IE からみるプロキシの設定について
PAC について
"WPAD" について
IE
からみるプロキシの設定について
昨今、インターネットの通信をする機能や製品が多くなっており、「プロキシの設定」についてお問合せを頂く事があります。
プロキシの設定については “インターネットオプション – 接続 – LAN の設定” があります。
この設定「どのように管理されており、アプリケーションがどのようにこの設定を利用するか」ご存知でしょうか?この Blog では以下の目次の内容に沿って、この “プロキシの設定について” の理解を深めて頂ければと思います。
- はじめに ~ HTTP 通信に利用されるモジュール ~
- インターネットオプションのプロキシ設定は誰のもの?
- IE の設定はいつどのように設定値が利用されるのか
- プロキシの設定についてよくある質問
1. はじめに ~ HTTP 通信をするモジュール ~
弊社から提供している HTTP の通信を行うモジュールには以下の 2 つがあります。
wininet.dll : 主にデスクトップにログインしたユーザーの権限で動くアプリケーションで利用する事を目的として作成されているモジュール。
winhttp.dll : 主にサービスなどログインをせずバックグラウンドで利用される事を目的として作成されているモジュール。
これらの 2 つのモジュールの API は一般向けにも公開されており、弊社製品以外でも様々なアプリケーションやサービスで利用することができます。
なお、IE はデスクトップでログオンし動作するアプリケーションであり、wininet.dll を利用しています。
2.インターネットオプションのプロキシ設定は誰のもの?
プロキシの設定を行う際、よく目にするのは “IE の設定” として管理されている以下のインターネットオプションの画面になるとおもいます。

弊社製品では多くの設定情報をレジストリに管理しており、代表的なものに「端末全体で共通した設定」を保持する場所(HKEY_LOCAL_MACHINE/HKLM)と、「ユーザー毎に行われた設定」を保持する場所が (HKEY_CURRENT_USER/HKCU)が存在します。
インターネットオプションで設定したプロキシの設定は、基本的には「ユーザー毎の情報」として HKCU で保存・維持管理されます。

詳細については別の機会に譲りますが、このプロキシ設定は以下のような複数のレジストリキー配下にある複数の値を連動させて設定を管理するようになっています。
キー : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
キー : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
3.IE の設定はいつどのように設定値が利用されるのか
上記の IE の設定はもちろん IE が通信を行う際に参照され利用されます。
では、その他のアプリケーションや機能ではどうでしょうか?
IE の管理するインターネットオプションから設定されたプロキシの設定を『利用するか否か』や『どのように利用するか』は各アプリケーションや機能の実装内容に依存します。
例えば、以下のようなシナリオが考えられます。
- IE と同様の通信モジュールである wininet.dll を利用しており、IE で設定された値をそのまま利用している
- wininet.dll は利用しているが、プロキシの設定については独自の実装を行っており別に管理されている
- サービスなど向けに用意されている winhttp.dll を利用しており、IE の設定を参照しその値を利用するようにしている
- winhttp.dll を利用しているがサービスとして動作しており、(IEでプロキシの設定を行った)ユーザーの権限で動作しないため他の設定を (netsh コマンドで設定されたプロキシの値)が参照される
- wininet/winhttp のいずれも利用していないが、プロキシの設定は IE の設定値をレジストリから参照しその情報を利用している
- wininet/winhttp のいずれも利用しておらず、完全に独自の実装が行われている
アプリケーションなどの実装によっては動作シナリオによって動きを柔軟に変化させられるよう上記の中の動作を組み合わせられていることなどもあります。
昨今ではサードパーティ製品も含めインターネットに接続し通信する機能やアプリケーションも増えており、一概に「いつどのように利用されるのか」をお伝えすることができません。
“IE の管理する” プロキシの設定値をどのように参照し利用するかについては個々のアプリケーションなどの実装についての確認をする必要があります。
ご参考
本題とは外れますが、上記に記載する wininet.dll や Winhttp.dll についてより知りたいという場合は、以下のような公開情報もご参照下さい。
Win32 Internet Extensions (WinInet)
About WinHTTP
WinINet vs. WinHTTP