Symptom
Om du använder funktionen WinHttpGetIEProxyConfigForCurrentUser i alla program och datorn har aldrig köra Microsoft Internet Explorer visas följande felmeddelande:
ERROR_FILE_NOT_FOUND
Orsak
Funktionen WinHttpGetIEProxyConfigForCurrentUser används följande undernyckel i registret:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet SettingsDen här registerundernyckeln skapas första gången Internet Explorer körs. Om din dator inte har kör Internet Explorer, finns inte den här registerundernyckeln. När du anropar funktionen WinHttpGetIEProxyConfigForCurrentUser i funktionen söker efter den här registerposten program och kan inte hitta det och felmeddelande visas.
Lösning
Lös problemet genom att starta Internet Explorer och sedan använda funktionen WinHttpGetIEProxyConfigForCurrentUser i alla program.
Mer information
Åtgärder för att återskapa problemet
-
Logga in på en dator där Internet Explorer inte har använts.
-
Starta Microsoft Visual Studio .NET.
-
Peka på Nyttpå Arkiv -menyn och sedan på projekt.
-
Klicka på Visual C++-projektunder Projekttyper.
-
Klicka på Win32-projektunder mallar.
-
Skriv Testi rutan namn och klicka sedan på OK.
-
Klicka på Inställningarpå sidan Välkommen till guiden för Win32-program .
-
Klicka på Slutförunder Programtypkonsolprogram. Test.cpp-filen skapas.
-
Ersätt den befintliga koden i filen Test.cpp med följande kod:
#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
Obs! Filen Winhttp.h och filen Winhttp.lib finns i Microsoft Platform software development kit (SDK). Om du vill hämta Platform SDK finns på följande Microsoft-webbplats:
-
Klicka på Test egenskaperpå projekt -menyn.
-
Dubbelklicka på Linkeri den vänstra rutan.
-
Klicka på indataunder Linker.
-
Ange winhttp.lib i fältet Ytterligare beroenden i den högra rutan och klicka på OK.
-
Klicka på Skapa lösningpå Build -menyn.
-
Tryck på CTRL + F5 för att köra programmet utan felsökningsverktyget. Du får felmeddelandet som nämns i avsnittet ”Symptom”.
Referenser
Mer information finns på följande Microsoft Developer Network (MSDN)-webbplats: