!!!なんとなーく [ProxyCfg.exe, a Proxy Configuration Tool|http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winhttp/http/proxycfg_exe__a_proxy_configuration_tool.asp]なんてサイトを参考にした翻訳もどき。 ただし、書いてある事の確認もしてないしで、実際の保証はできませぬ(^^; MSがちゃんとした翻訳してくれるんじゃない? !!!ProxyCfg.exe, a Proxy Configuration Tool このトピックスは、 Microsoft Windows HTTP Services (WinHTTP) proxyの環境設定ツールであるProxyCfg.exeの使い方を説明したものです。 Microsoft Windows HTTP Services (WinHTTP)を使用したProxy経由でHTTPとHTTPSサーバにアクセスする方法は2通りあります。WinHTTPアプリケーションでProxy設定を指定したり、Platform software development kit (SDK)に含まれているProxy設定ユーティリティを使用して外部のアプリケーションからデフォルトのProxy設定を指定することができます。 アプリケーションやスクリプトを使ってProxy情報を設定することができます。もし、WinHTTPのAPIを使用してプログラムを書くのであれば、これから紹介するProxy設定を変更する2つのテクニックのうちの1つを利用することができます。  WinHttpOpen関数を使用します。第2引数でアクセスタイプを、第3引数でProxy名を、第4引数でバイパスリストを指定します。以下のサンプルは、WinHttpOpen関数を使用してProxy情報を設定する方法を示しています。 hSession = WinHttpOpen( L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_NAMED_PROXY, L"proxy_name", L"", 0);  WinHttpSetOption関数を使用します。WINHTTP_OPTION_PROXYフラグは、WINHTTP_PROXY_INFO構造体でProxy設定を指定することを可能にします。以下のサンプルは、WinHttpSetOption関数を使用してProxy情報を設定する方法を示しています。 WINHTTP_PROXY_INFO proxyInfo; proxyInfo.dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY; proxyInfo.lpszProxy = L"proxy_name"; proxyInfo.lpszProxyBypass = L""; // Set the proxy information for this session. WinHttpSetOption( hSession, WINHTTP_OPTION_PROXY, &proxyInfo, sizeof(proxyInfo)); オブジェクトを使用してスクリプトやアプリケーションを書くなら、Proxy設定を変更するために以下の方法も使用することができます。  SetProxyメソッドを使用します。第1引数にアクセスタイプを、第2引数にProxy名を、第3引数にバイパスリストを指定します。以下のサンプルは、スクリプトでSetProxyメソッドを使用してProxy情報を設定する方法を示しています。 WinHttpReq.SetProxy(HTTPREQUEST_PROXYSETTING_PROXY, "proxy_server:80", "*.microsoft.com"); デフォルト設定を指定したり、SetProxyメソッドやWinHttpSetOption関数のどちらかを使用する必要性を排除したりするためには、Proxy環境設定ユーティリティを使用します。このユーティリティを使用することで、アプリケーションがネットワークに直接アクセスするか、Proxy経由でアクセスするか、バイパスリストを指定することで直接アクセスさせたりProxy経由でアクセスさせたりの組み合わせとするか、のどれかを指定することができます。WinHTTP APIを使用する場合、Proxy環境設 定ツールは、WinHttpOpen APIに対してWINHTTP_ACCESS_TYPE_DEFAULTフラグを渡したときの設定だけに対して作用します。WinHttpRequestオブジェクトは、デフォルトで、Proxy環境設定ツールで設定した値を使用します。 WinHTTPのProxy設定は、Microsoft Internet ExplorerのProxy設定ではありません。Microsoft Windowsのコントロールパネルでは、WinHTTP Proxyの環境設定はできません。WinHTTP Proxy環境設定ユーティリティを使用しても、Internet Explorerの設定を変更しません。 Note:Proxy設定が正しくなくて、WinHTTPを使用してHTTPリクエストを送信することを試みた場合、エラーが発生します。 Command Line Parameters 以下の表は、ProxyCfg.exeツールで使用することができるコマンドラインパラメータです。 パラメータ 説明 指定なし パラメータの指定がなかった場合、現在のWinHTTP Proxy設定が表示されます。 ? ヘルプが表示されます。 d WinHTTPアプリケーションがProxyを使用せずに直接ネットワークにアクセスすることを指定します。 p Proxyサーバを指定します。オプションでProxyを使用せずにアクセスするサーバのリスも指定することができます。 u WinHTTPアプリケーションが、現在のユーザのInternet Explorer のProxy設定を使用するように指定します。Internet Explorerが自動Proxy設定の自動検出になっているか、自動設定のURLを使用してProxy設定をしている場合、このパラメータは、動作しません。 i WinHTTPアプリケーションが、現在のユーザのInternet Explorer のProxy設定を使用するように指定します。Proxy.exeが以前使用されていなかった場合だけ、動作します。もし、ProxyCfg.exeがインストールされているなら、uパラメータを指定してマニュアル設定を使用するように指定してください。Internet Explorerが自動Proxy設定の自動検出になっているか、自動設定のURLを使用してProxy設定をしている場合、このパラメータは、動作しません。 文字列長に限定されて範囲で、複数のProxyを指定することができます。Proxyリストは、Proxyにアクセスするために使用するポート番号を含めることができます。ある特定のプロトコル用のProxyリストを指定するには、=http://という書式で指定する必要があります。指定可能なプロトコルは、HTTPとHTTPです。例えば、HTTP Proxyのリストを指定する正しい文字列は、http=http://http_proxy:80となります。http_proxxy_nameにはProxyサーバの名前を指定し、80はProxyにアクセスするために使用するポート番号を指定します。もし、Proxyがプロトコルのデフォルトのポート番号を使用するのであれば、ポート番号を省略することができます。あるProxyがProxy名だけの指定でリストに定義されていた場合、それを、プロトコルを指定しない全てのプロトコルでデフォルトProxyとして使用することができます。例えば、http=http://http_proxy other_proxyと指定した場合、http_proxyを任意のHTTP操作に対して使用し、proxy_otherをHTTPSプロトコルに対して使用します。 Proxyバイパスリストに、IPアドレスやローカルのマシンで名前解決できるホスト名を使用することができます。このリストは、“*”といったワイルドカードを使用することができます。これは、Proxyサーバをバイパスする宛先アドレスに、(例えば)“*.microsoft.com”や“*.org”といった指定したパターンに一致するアドレスをバイパスさせるといったことができるようにします。ワイルドカード文字は、リストの中のいちばん左端である必要があります。例えば、“aaa.*”といった指定はサポートしていません。複数のアドレスやホスト名の一覧を指定するには、Proxyバイパス文字列の中で、空白やセミコロンで区切る必要があります。もし、を指定した場合、バイパス機能は、ピリオドを含まない任意のホスト名へのアクセスをバイパスします。 Warning:ProxyCfg.exeを実行した後は、以前のProxy設定を復元することはできません。しかし、全体のProxy設定を削除することができます。 Usage Proxy環境設定ツールを使用するためには、コマンドプロンプト画面を開き、適切なコマンドラインパラメータを指定してProxy環境設定ユーティリティを実行する必要があります。 使用例 例1:外部リソースに対してだけProxyを使用する 以下のコマンド例は、最も一般的なProxyCfg.exeの使用例です。このコマンドは、HTTPサーバとHTTPSサーバの両方にアクセスするために “proxy_server” という名前のProxyサーバを使用し、ピリオドを含まないホスト名だけの指定のときはProxyサーバを使用しないように設定します。 proxycfg -p proxy_server "" 例2:全てのリソースに対してProxyを使用する 以下のコマンド例は、HTTPサーバとHTTPSサーバの両方にアクセスするために“proxy_server” という名前のProxyサーバを使用するように指定します。バイパスリストを指定しません。 proxycfg -p proxy_server 例3:セキュアなリソースに対して別のProxyを使用する 以下のコマンド例は、http_proxy Proxy経由でHTTPサーバにアクセスし、https_proxy Proxy経由でHTTPSサーバにアクセスするように指定します。ローカルのイントラネットサイトと、*.microsoft.comドメインの任意のサイトに対しては、Proxyをバイパスするように指定します。 proxycfg -p "http=http_proxy https=https_proxy" ";*.microsoft.com" ProxyCfg.exeを削除する Proxy環境設定ツールを使用した後は、以前のProxy設定に復元することはできません。しかし、必要であれば、ユーティリティが作成したレジストリ設定を削除することができます。ProxyCfg.exeが作成したレジストリ全てを削除するためには、以下のレジストリキーからWinHttpSettings値を削除する必要があります。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\WinHttpSettings このキーを削除すると、全てのProxy設定を削除することができます。 ProxyCfg.exeと認証 Proxy環境設定ユーティリティは、デフォルト認証ポリシーを設定します。信用されていないホストでは、NTLM認証を実行することができません。デフォルトでは、NTLM認証は、Proxyバイパスリスト上のホストに対してだけ自動で実行されます。Proxyを使用していないなら、NTLM認証の実行を信用するホストのバイパスリストを指定するためにProxyCfg.exeを使用することができます。この目的でProxyCfg.exeを使用するときは、Proxy名が必要となります。しかし、実際のProxy名の場所には任意の有効な文字を使うことができます。 自動ログオンPolicyに関する詳細は、Automatic Logon Policyを参照してください。