Vous recevez un message d’erreur « ERROR_FILE_NOT_FOUND » lorsque vous essayez d’utiliser la fonction WinHttpGetIEProxyConfigForCurrentUser

S’applique à : Internet Explorer

Symptômes


Si votre ordinateur n’a jamais exécuté Microsoft Internet Explorer et que vous utilisez la fonction WinHttpGetIEProxyConfigForCurrentUser dans un programme, le message d’erreur suivant s’affiche :
ERROR_FILE_NOT_FOUND

Cause


La fonction WinHttpGetIEProxyConfigForCurrentUser utilise la sous-clé de Registre suivante :
Paramètres HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Cette sous-clé de Registre est créée la première fois que Internet Explorer s’exécute. Si votre ordinateur n’a pas exécuté Internet Explorer, cette sous-clé de Registre n’existe pas. Lorsque vous appelez la fonction WinHttpGetIEProxyConfigForCurrentUser dans un programme, la fonction de recherche pour cette entrée de Registre ne le trouve pas et vous recevez le message d’erreur.

Résolution


Pour résoudre ce problème, démarrez Internet Explorer, puis utiliser la fonction WinHttpGetIEProxyConfigForCurrentUser dans n’importe quel programme.

Informations supplémentaires


Procédure pour reproduire le problème

  1. Ouvrez une session sur un ordinateur où Internet Explorer n’a jamais été utilisé.
  2. Démarrez Microsoft Visual Studio .NET.
  3. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
  4. Sous Types de projets, cliquez sur Projets Visual C++.
  5. Sous modèles, cliquez sur Projet Win32.
  6. Dans la zone nom , tapez Test, puis cliquez sur OK.
  7. Dans la page Bienvenue dans l’Assistant Application Win32 , cliquez sur Paramètres de l’Application.
  8. Sous type d’Application, cliquez sur application Console, puis cliquez sur Terminer. Le fichier Test.cpp est créé.
  9. Remplacez le code existant dans le fichier Test.cpp par le code suivant :
    #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
    Remarque Le fichier Winhttp.h et le fichier Winhttp.lib sont inclus dans le Microsoft Platform software development kit (SDK). Pour télécharger le Kit de développement de plate-forme, visitez le site Web de Microsoft à l’adresse suivante :
  10. Dans le menu projet , cliquez sur Propriétés de Test.
  11. Dans le volet gauche, double-cliquez sur éditeur de liens.
  12. Dans l' éditeur de liens, cliquez sur entrée.
  13. Dans le volet droit, tapez winhttp.lib dans le champ Dépendances supplémentaires , puis cliquez sur OK.
  14. Dans le menu Générer, cliquez sur Générer la solution.
  15. Appuyez sur CTRL + F5 pour exécuter le programme sans le débogueur. Vous recevez le message d’erreur qui est mentionné dans la section « Symptômes ».

Références


Pour plus d’informations, reportez-vous au site web MSDN (Microsoft Developer Network) à l’adresse suivante (en anglais) :