Síntomas
Si su equipo nunca ha ejecutado Microsoft Internet Explorer y utilizar la función WinHttpGetIEProxyConfigForCurrentUser en cualquier programa, recibirá el siguiente mensaje de error:
ERROR_FILE_NOT_FOUND
Causa
La función WinHttpGetIEProxyConfigForCurrentUser utiliza la siguiente subclave del registro:
Configuración de HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet SettingsEsta subclave del registro se crea la primera vez que se ejecuta Internet Explorer. Si el equipo no ejecuta Internet Explorer, esta subclave del registro no existe. Cuando llame a la función WinHttpGetIEProxyConfigForCurrentUser en un programa, la función busca esta entrada del registro y no puede encontrarla, y recibirá el mensaje de error.
Resolución
Para resolver este problema, inicie Internet Explorer y, a continuación, utilizar la función WinHttpGetIEProxyConfigForCurrentUser en cualquier programa.
Más información
Pasos para reproducir el problema
-
Inicie sesión en un equipo que nunca ha utilizado Internet Explorer.
-
Inicie Microsoft Visual Studio .NET.
-
En el menú archivo, elija nuevo y, a continuación, haga clic en proyecto.
-
En Tipos de proyecto, elija Proyectos de Visual C++.
-
En plantillas, haga clic en Proyecto Win32.
-
En el cuadro nombre , escriba Testy, a continuación, haga clic en Aceptar.
-
En la página el Asistente para aplicaciones Win32 , haga clic en Configuración de la aplicación.
-
En tipo de aplicación, haga clic en aplicación de consolay, a continuación, haga clic en Finalizar. Se crea el archivo Test.cpp.
-
Reemplace el código existente en el archivo Test.cpp con el código siguiente:
#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: El archivo Winhttp.h y el archivo Winhttp.lib se incluyen en el kit de desarrollo de software (SDK) de Microsoft Platform. Para descargar el SDK de la plataforma, visite el siguiente sitio Web de Microsoft:
-
En el menú proyecto , haga clic en Propiedades de la prueba.
-
En el panel izquierdo, haga doble clic en el vinculador.
-
En el vinculador, haga clic en entrada.
-
En el panel derecho, escriba winhttp.lib en el campo de Dependencias adicionales y, a continuación, haga clic en Aceptar.
-
En el menú Generar, haga clic en Generar solución.
-
Presione CTRL + F5 para ejecutar el programa sin el depurador. Recibe el mensaje de error que se menciona en la sección "Síntomas".
Referencias
Para obtener más información al respecto, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):