Príznaky
Ak používate funkciu WinHttpGetIEProxyConfigForCurrentUser v ľubovoľnom programe počítač sa nikdy spustiť program Microsoft Internet Explorer, zobrazí nasledujúce chybové hlásenie:
ERROR_FILE_NOT_FOUND
Príčina
Funkcia WinHttpGetIEProxyConfigForCurrentUser používa nasledujúci podkľúč databázy registry:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet SettingsTento podkľúč databázy registry sa vytvorí pri prvom spustení programu Internet Explorer. Ak počítač má spustiť program Internet Explorer, tento podkľúč databázy registry neexistuje. Keď funkciu WinHttpGetIEProxyConfigForCurrentUser programu, funkcia vyhľadávania tejto položky databázy registry a nemôže nájsť a chybové hlásenie.
Riešenie
Ak chcete vyriešiť tento problém, spustite program Internet Explorer a potom použite funkciu WinHttpGetIEProxyConfigForCurrentUser v ľubovoľnom programe.
Ďalšie informácie
Kroky na reprodukovanie tohto problému
-
Prihláste sa do počítača, ak program Internet Explorer nikdy používal.
-
Spustenie nástroja Microsoft Visual Studio .NET.
-
V ponuke súbor ukážte na položku novéa kliknite na tlačidlo projekt.
-
Podľa Projekt typy, kliknite na položku Visual C++ projektov.
-
Podľa šablóny, kliknite na tlačidlo Win32 projekt.
-
Do poľa názov zadajte Testa kliknite na tlačidlo OK.
-
Na stránke Víta vás Sprievodca aplikáciou Win32 , kliknite na položku Nastavenie aplikácie.
-
Podľa typu aplikácie, kliknite na aplikáciua kliknite na tlačidlo Dokončiť. Test.cpp súbor je vytvorený.
-
Nahradiť existujúci kód v súbore Test.cpp s nasledujúcim kódom:
#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: Súbor Winhttp.h súbor Winhttp.lib sú súčasťou súpravy Microsoft Platform software development kit (SDK). Stiahnuť Platform SDK, nájdete na webovej lokalite spoločnosti Microsoft:
-
Projekt v ponuke Vlastnosti Test.
-
Na ľavej table dvakrát kliknite na položku Linker.
-
Podľa Linker, kliknite na vstup.
-
Na pravej table zadajte winhttp.lib v poli Ďalšie závislosti a kliknite na tlačidlo OK.
-
Zostava ponuke Riešenie.
-
Stlačte kláves F5 spustiť bez ladenia. Chybové hlásenie uvedené v časti "Príznaky".
Odkazy
Ďalšie informácie nájdete na nasledujúcej webovej lokalite Microsoft Developer Network (MSDN):