Problembeschreibung
Wenn Ihrem Computer Microsoft Internet Explorer nie ausgeführt hat, und verwenden Sie die WinHttpGetIEProxyConfigForCurrentUser -Funktion in einem beliebigen Programm, erhalten Sie folgende Fehlermeldung:
ERROR_FILE_NOT_FOUND
Ursache
Die WinHttpGetIEProxyConfigForCurrentUser -Funktion verwendet den folgenden Registrierungsunterschlüssel:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet SettingsDieser Registrierungsunterschlüssel wird erstmals erstellt, die Internet Explorer ausgeführt wird. Wenn Ihr Computer Internet Explorer nicht ausgeführt wurde, ist dieser Registrierungsunterschlüssel nicht vorhanden. Wenn Sie rufen Sie die WinHttpGetIEProxyConfigForCurrentUser -Funktion in einem Programm die Funktion sucht diesen Registrierungseintrag nicht finden und die Fehlermeldung.
Fehlerbehebung
Um dieses Problem zu beheben, starten Sie Internet Explorer, und verwenden Sie die WinHttpGetIEProxyConfigForCurrentUser -Funktion in einem Programm.
Weitere Informationen
Schritte zum Reproduzieren des Problems
-
Melden Sie sich bei einem Computer, in dem Internet Explorer nie verwendet wurde.
-
Starten Sie Microsoft Visual Studio .NET.
-
Klicken Sie im Menü Datei auf neu und klicken Sie dann auf Projekt.
-
Klicken Sie unter Projekttypenauf Visual C++-Projekte.
-
Klicken Sie unter Vorlagenauf Win32-Projekt.
-
Geben Sie im Feld NameTest, und klicken Sie auf OK.
-
Klicken Sie auf der Seite Willkommen beim Win32 Application Wizard auf Application Settings.
-
Unter AnwendungstypKonsolenanwendungsprojektauf und klicken Sie dann auf Fertig stellen. Die Bezeichnung-Datei wird erstellt.
-
Ersetzen Sie den vorhandenen Code in der Datei der Bezeichnung mit dem folgenden Code:
#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
Hinweis Die Winhttp.h und die Winhttp.lib-Datei sind im Microsoft Platform Software Development Kit (SDK) enthalten. Das Platform SDK herunterladen, finden Sie auf der folgenden Microsoft-Website:
-
Klicken Sie im Menü Projekt auf Eigenschaften.
-
Doppelklicken Sie im linken Bereich auf Linker.
-
Klicken Sie unter LinkerInput.
-
Geben Sie im rechten Bereich winhttp.lib im Feld Additional Dependencies , und klicken Sie dann auf OK.
-
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
-
Drücken Sie STRG + F5, um das Programm ohne den Debugger ausführen. Sie erhalten die Fehlermeldung, die im Abschnitt "Symptome" genannt wird.
Informationsquellen
Weitere Informationen finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website: