Příznaky
Pokud počítač nikdy nespustil aplikaci Microsoft Internet Explorer a pomocí funkce WinHttpGetIEProxyConfigForCurrentUser v libovolném programu, obdržíte následující chybová zpráva:
ERROR_FILE_NOT_FOUND
Příčina
Funkce WinHttpGetIEProxyConfigForCurrentUser používá následující podklíč registru:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet nastaveníTento podklíč registru je vytvořen při prvním spuštění aplikace Internet Explorer. V počítači nebyla spuštěna aplikace Internet Explorer, tento podklíč registru neexistuje. Při volání funkce WinHttpGetIEProxyConfigForCurrentUser v programu, funkce vyhledá tato položka registru a nelze najít a zobrazit chybová zpráva.
Řešení
Chcete-li vyřešit tento problém, spusťte aplikaci Internet Explorer a potom pomocí funkce WinHttpGetIEProxyConfigForCurrentUser v libovolné aplikaci.
Další informace
Kroky pro reprodukci problému
-
Přihlaste se k počítači, kde aplikace Internet Explorer nebyl nikdy používán.
-
Spusťte aplikaci Visual Studio .NET.
-
V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt.
-
Ve skupinovém rámečku Typy projektůklepněte na tlačítko Projekty Visual C++.
-
Ve skupinovém rámečku šablonyklepněte na příkaz Projekt Win32.
-
Do pole název zadejte Testa klepněte na tlačítko OK.
-
Na stránce Vítá vás Průvodce aplikací Win32 klikněte na Nastavení aplikace.
-
Ve skupinovém rámečku Typ aplikaceklepněte na tlačítko aplikace konzolya klepněte na tlačítko Dokončit. Je vytvořen soubor Test.cpp.
-
Nahraďte existující kód v souboru Test.cpp následující kód:
#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
Poznámka: Soubor Winhttp.h a soubor Winhttp.lib jsou zahrnuty v sadě Microsoft Platform software development kit (SDK). Platform SDK stáhnout, navštivte následující Web společnosti Microsoft:
-
V nabídce projekt klepněte na tlačítko Test vlastnosti.
-
V levém podokně poklepejte na Propojovací program.
-
Ve skupinovém rámečku Linkerklepněte na tlačítko vstup.
-
V pravém podokně zadejte winhttp.lib v poli Další závislosti a potom klepněte na tlačítko OK.
-
V nabídce sestavení klepněte na tlačítko Sestavit řešení.
-
Stisknutím kláves CTRL + F5 ke spuštění programu bez ladicí program. Zobrazí chybová zpráva, která je uvedena v části "Příznaky".
Odkazy
Další informace naleznete následujícím webu Microsoft Developer Network (MSDN):