現象
お使いのコンピューターが Microsoft Internet Explorer を実行していないと、 WinHttpGetIEProxyConfigForCurrentUser関数を使用して、任意のプログラムで、次のエラー メッセージが表示されます。
ERROR_FILE_NOT_FOUND
原因
WinHttpGetIEProxyConfigForCurrentUser関数は、次のレジストリ サブキーを使用します。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet の設定Internet Explorer を実行する最初の時間にこのレジストリ サブキーが作成されます。お使いのコンピューターでは、Internet Explorer は実行されませんが、このレジストリ サブキーは存在しません。するプログラムでは、このレジストリ エントリの検索関数、 WinHttpGetIEProxyConfigForCurrentUser関数を呼び出すし、それを見つけることができませんし、エラー メッセージが表示されます。
解決方法
この問題を解決するは、Internet Explorer を起動し、任意のプログラムで、 WinHttpGetIEProxyConfigForCurrentUser関数を使用します。
詳細情報
問題の再現手順
-
Internet Explorer が使用されないコンピューターにログオンします。
-
Microsoft Visual Studio .NET を起動します。
-
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
-
プロジェクトの種類] の下には、 Visual C++ プロジェクトをクリックします。
-
[テンプレート] には、 Win32 プロジェクトをクリックします。
-
[名前] ボックスにテストと入力し、[ OK] をクリックします。
-
[ Win32 アプリケーション ウィザードへようこそ] ページで、アプリケーションの設定をクリックします。
-
[アプリケーションの種類] で、コンソール アプリケーション] をクリックし、し、[完了] をクリックします。Test.cpp ファイルが作成されます。
-
Test.cpp ファイル内の既存のコードを次のコードに置き換えます。
#include "stdafx.h"#include <Windows.h>#include <Winhttp.h>using namespace std;void main(){WINHTTP_CURRENT_USER_IE_PROXY_CONFIG MyProxyConfig;if(!WinHttpGetIEProxyConfigForCurrentUser(&MyProxyConfig)){//check the errorDWORD Err = GetLastError();cout << "WinHttpGetIEProxyConfigForCurrentUser failed with the following error number: " << Err << endl;switch (Err){case ERROR_FILE_NOT_FOUND:cout << "The error is ERROR_FILE_NOT_FOUND" << endl;break;case ERROR_WINHTTP_INTERNAL_ERROR:cout << "ERROR_WINHTTP_INTERNAL_ERROR" << endl;break;case ERROR_NOT_ENOUGH_MEMORY:cout << "ERROR_NOT_ENOUGH_MEMORY" << endl;break;default:cout << "Look up error in header file." << endl; }//end switch}//end ifelse{//no error so check the proxy settings and free any stringscout << "Auto Detect is: " << MyProxyConfig.fAutoDetect << endl;if(NULL != MyProxyConfig.lpszAutoConfigUrl){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszAutoConfigUrl << endl;GlobalFree(MyProxyConfig.lpszAutoConfigUrl);}if(NULL != MyProxyConfig.lpszProxy){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszProxy << endl;GlobalFree(MyProxyConfig.lpszProxy);}if(NULL != MyProxyConfig.lpszProxyBypass){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszProxyBypass << endl;GlobalFree(MyProxyConfig.lpszProxyBypass);}}//end elsecout << "finished!";}//end main
-
Microsoft プラットフォーム ソフトウェア開発キット (SDK) には、Winhttp.h ファイルと Winhttp.lib ファイルが含まれます。プラットフォーム SDK をダウンロードするには、次のマイクロソフト Web サイトを参照してください。
-
[プロジェクト] メニューの [テストのプロパティをクリックします。
-
左側のウィンドウでリンカーをダブルクリックします。
-
リンカーでは、[入力] をクリックします。
-
右側のウィンドウでは、追加の依存関係] フィールドに、 winhttp.libを入力し、し、[ OK] をクリックします。
-
[ビルド] メニューの [ソリューションのビルド] をクリックします。
-
CTRL + f5 キーを押してデバッガーなしプログラムを実行します。「現象」に記載されているエラー メッセージが表示されます。