プログラムで照会し、Internet Explorer でプロキシを設定する方法

文書翻訳 文書翻訳
文書番号: 226473 - 対象製品
すべて展開する | すべて折りたたむ

概要

プログラムでクエリを Internet Explorer のプロキシ設定情報を設定する手順の必要な説明します。

Internet Explorer 4.x の下と以前のバージョンでは、InternetSetOption、InternetQueryOption API が INTERNET_OPTION_PROXY フラグが使用されます。 このオプションは [Internet Explorer 5 作業も、複数の接続オプションが、新しいバージョンで導入されました。 これを与え、INTERNET_OPTION_PROXY フラグは設定「静的」プロキシ サーバーのみ返します。 静的オプションは [Internet Explorer 4. 0 がほとんど同じ方法、HKEY_CURRENT_USER </a0> ハイブで格納されているプロキシ サーバー情報です。

メモ INTERNET_OPTION_PROXY は、設定を完全に変更しません。 これは現在のプロセスに対する NULL ハンドルを使用する場合のみです。 ただし、ことができますも設定を変更ごとのセッションごとに (セッション ハンドルは InternetOpen() API を使用して取得されます) で、有効なセッション ハンドルが送信された場合。

Internet Explorer 5 で、[指定した場合 (ダイヤルアップ接続) などの別の接続オプションを既定値としては、可能なこと、INTERNET_OPTION_PROXY を使用して取得する、プロキシ情報フラグかもしれません不適切な現在の Internet Explorer セッション。 Internet Explorer 5 で、[このための INTERNET_OPTION_PER_CONNECTION_OPTION を代わりに使用することをお勧めします。

メモ INTERNET_OPTION_PER_CONNECTION_OPTION にすると、設定、NULL ハンドルを使用すると、システム全体にわたるに基づいて変更します。 グローバル プロキシ設定を正しく反映するには、INTERNET_OPTION_REFRESH オプション フラグを使って InternetSetOption 関数を呼び出す必要があります。 または、セッション別で、設定を設定するには、有効なセッション ハンドルを使用できます。

メモ Internet Explorer 5 またはそれ以降のバージョンでのグローバル コンピューターの設定に影響を与えず、whgke プロセスのプロキシ情報を変更することもは。 これを行うには、INTERNET_OPTION_PER_CONNECTION_OPTION オプションを使用して、 InternetOpen 関数によって返されるハンドルに InternetSetOption 関数を呼び出す必要があります。 次のコード使用例は hInternet ハンドルが閉じられる、実際の要求が使用されないにもかかわらず、プロキシ プロセス全体を変更します。
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

詳細

Internet Explorer 4.x の場合、[プロキシ情報を照会するための一般的な機構はように表示。
unsigned long        nSize = 4096;
char                 szBuf[4096] = { 0 };
INTERNET_PROXY_INFO* pInfo = (INTERNET_PROXY_INFO*)szBuf;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PROXY, pInfo, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
Internet Explorer 5 で、[推奨される方法の下のようなコードを使用は:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[5];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[1].dwOption = INTERNET_PER_CONN_AUTODISCOVERY_FLAGS;
Option[2].dwOption = INTERNET_PER_CONN_FLAGS;
Option[3].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
Option[4].dwOption = INTERNET_PER_CONN_PROXY_SERVER;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 5;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
   if(Option[0].Value.pszValue != NULL)
   printf("%s\n", Option[0].Value.pszValue);

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_PROXY_URL) == PROXY_TYPE_AUTO_PROXY_URL)
  printf("PROXY_TYPE_AUTO_PROXY_URL\n");

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_DETECT) == PROXY_TYPE_AUTO_DETECT)
   printf("PROXY_TYPE_AUTO_DETECT\n");

INTERNET_VERSION_INFO      Version;
nSize = sizeof(INTERNET_VERSION_INFO);

InternetQueryOption(NULL, INTERNET_OPTION_VERSION, &Version, &nSize);

if(Option[0].Value.pszValue != NULL)
   GlobalFree(Option[0].Value.pszValue);

if(Option[3].Value.pszValue != NULL)
   GlobalFree(Option[3].Value.pszValue);

if(Option[4].Value.pszValue != NULL)
   GlobalFree(Option[4].Value.pszValue);
				
INTERNET_PER_CONN_OPTION_LIST 構造体で、pszConnection 文字列を設定しての接続が、上記のコードを指定します。 既定 (または LAN) の構成情報は取得されますこの文字列は NULL に設定、設定します。

最初のオプション (オプション [0] INTERNET_PER_CONN_AUTOCONFIG_URL) は、プロキシ サーバーの自動構成の指定された URL を返します。 2 番目のオプション (オプション [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG) は、自動検出オプションが有効になっているかどうかまたは指定された接続のないを検出します。 3 番目のオプションは、この特定の接続に設定されたフラグの組み合わせ決定します。 最後の 2 つオプションは、Internet Explorer 4.x で取得した whe INTERNET_OPTION_PROXY を使用した同じ情報に対応します。

わかることも、GlobalFree() を使用してオプションの文字列値を返す可能性があることができますが解放されます。 これは、WININET ライブラリによっての文字列バッファーが割り当てられ、プログラマが使用した後、バッファーを解放するまでのためです。

別の接続に関する情報を入手するには、ダイヤルアップ設定エントリをポイントする List.pszConnection 文字列中の変更だけで興味がします。

同様に、プロキシ情報を設定すると使用して、同じ手法が InternetSetOption() 代わりに、たとえば:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[1];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = "http://myproxy:8080";

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());

				
、上記のサンプルは、既定 (または LAN) を変更、もう一度 1 回だけ設定 (List.pszConnection NULL = =)。 このサンプルでは、「静的」プロキシ サーバーの情報がポート 8080 では、"http://myproxy"に変更されます。 同様に変更することも、自動構成 URL できます:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[2];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[0].Value.pszValue = "http://myserver/get_proxy_info.dll";
Option[1].dwOption = INTERNET_PER_CONN_FLAGS;
Option[1].Value.dwValue = PROXY_TYPE_AUTO_PROXY_URL;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 2;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
をプロキシ サーバーを使用して HTTP 用の他のプロトコルに直接移動の Internet Explorer を構成するのコードに従ってを使用します。

メモ INTERNET_PER_CONN_PROXY_SERVER に渡されるバッファーには、(このコード設定のみの HTTP、およびその他のすべてのプロトコルの使用の直接接続) 各プロトコルに対して設定されています。

メモ INTERNET_PER_CONN_FLAGS 値は設定両方のプロキシの種類 (直接およびプロキシを介して)、オプション リスト Array の 1 つの要素に以下のコードのようします。

メモ 必要がある OR でフラグこれら 1 つの場所。 これらは正しく表示これらのフラグを別のリストの要素に配置した場合 (インターネット エクスプローラー オプション) は、動作のフラグ (設定されている順) のいずれかのみがします。
int main(int argc, char * argv[]) 
{ 
char buff[256] = "http=http://<ProxyServerName>:80"; 
// To include server for FTP, HTTPS, and so on, use the string
// (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80) 
INTERNET_PER_CONN_OPTION_LIST    List; 
INTERNET_PER_CONN_OPTION         Option[3]; 
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; 
Option[0].Value.pszValue = buff; 

Option[1].dwOption = INTERNET_PER_CONN_FLAGS; 
Option[1].Value.dwValue = PROXY_TYPE_PROXY; 
Option[1].Value.dwValue |= PROXY_TYPE_DIRECT; 
// This option sets all the possible connection types for the client. 
// This case specifies that the proxy can be used or direct connection is possible.

Option[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS; 
Option[2].Value.pszValue = "<local>"; 

 

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 
List.pszConnection = NULL; 
List.dwOptionCount = 3; 
List.dwOptionError = 0; 
List.pOptions = Option; 

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize)) 
printf("InternetSetOption failed! (%d)\n", GetLastError()); 

InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL,NULL); 
//The connection settings for other instances of Internet Explorer. 

return 0; 

}
				
(もう一度、既定または LAN の設定) 上のサンプルの自動プロキシ構成 URL を指定し自動プロキシ構成を有効にするには、オプション フラグの設定、がします。

関連情報

MSDN の WinInet API のドキュメント、1999年 4 月

プロパティ

文書番号: 226473 - 最終更新日: 2007年4月10日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft Internet Explorer 4.0 128 ビット版
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Windows Internet Services (WinInet)
キーワード:?
kbhowto kbmt KB226473 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:226473
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com