Sintomi
Se il computer non ha mai eseguito Microsoft Internet Explorer e si utilizza la funzione WinHttpGetIEProxyConfigForCurrentUser in qualsiasi programma, viene visualizzato il seguente messaggio di errore:
ERROR_FILE_NOT_FOUND
Causa
La funzione WinHttpGetIEProxyConfigForCurrentUser viene utilizzata la seguente sottochiave del Registro di sistema:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet SettingsQuesta sottochiave del Registro di sistema viene creata la prima volta che Internet Explorer viene eseguito. Se il computer non è eseguito Internet Explorer, questa sottochiave del Registro di sistema non esiste. Quando si chiama la funzione WinHttpGetIEProxyConfigForCurrentUser in un programma, la funzione di ricerca per questa voce del Registro di sistema e riesce a trovarlo, e viene visualizzato il messaggio di errore.
Risoluzione
Per risolvere questo problema, avviare Internet Explorer e quindi utilizzare la funzione WinHttpGetIEProxyConfigForCurrentUser in qualsiasi programma.
Ulteriori informazioni
Procedura per riprodurre il problema
-
Accedere a un computer in Internet Explorer non è mai stato utilizzato.
-
Avviare Microsoft Visual Studio .NET.
-
Dal menu File , scegliere Nuovo, quindi progetto.
-
In Tipo di progetto scegliere Progetti di Visual C++.
-
In modelli, fare clic su Progetto Win32.
-
Nella casella nome digitare Teste quindi fare clic su OK.
-
Nella pagina Creazione guidata applicazione Win32 , fare clic su Impostazioni applicazione.
-
In tipo di applicazione, fare clic su applicazione Consolee quindi fare clic su Fine. Viene creato il file test. cpp.
-
Sostituire il codice esistente nel file test. cpp con il codice seguente:
#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
Nota: Il file Winhttp.h e il file Winhttp.lib sono inclusi in Microsoft Platform software development kit (SDK). Per scaricare Platform SDK, visitare il seguente sito Web Microsoft:
-
Dal menu progetto , fare clic su Proprietà del Test.
-
Nel riquadro di sinistra fare doppio clic su Linker.
-
Nel Linker, fare clic su Input.
-
Nel riquadro di destra, digitare winhttp.lib nel campo Dipendenze aggiuntive e quindi fare clic su OK.
-
Scegliere Genera soluzione dal menu Genera.
-
Premere CTRL + F5 per eseguire il programma senza il debugger. Viene visualizzato il messaggio di errore menzionato nella sezione "Sintomi".
Riferimenti
Per ulteriori informazioni, visitare il seguente sito Web Microsoft Developer Network (MSDN):