З'являється повідомлення про помилку "ERROR_FILE_NOT_FOUND" під час використання функції WinHttpGetIEProxyConfigForCurrentUser

Застосовується до: Internet Explorer

Ознаки


Якщо на комп'ютері інстальовано ніколи не виконувати Microsoft Internet Explorer і в будь-яку програму використовується функція WinHttpGetIEProxyConfigForCurrentUser , з'являється таке повідомлення про помилку:
ERROR_FILE_NOT_FOUND

Причина


Функція WinHttpGetIEProxyConfigForCurrentUser , використовує такий підрозділ реєстру:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Цей розділ створюється під час першого запуску в Internet Explorer. Якщо на комп'ютері, не, запустити браузер Internet Explorer, підрозділ реєстру не існує. Під час виклику функції WinHttpGetIEProxyConfigForCurrentUser , у програмі функції шукає цей запис реєстру і не вдається знайти, і з'являється повідомлення про помилку.

Спосіб вирішення


Щоб вирішити цю проблему, запустіть браузер Internet Explorer і потім функція WinHttpGetIEProxyConfigForCurrentUser в будь-яку програму.

Додаткові відомості


Відтворення проблеми

  1. Увійдіть на комп'ютер, коли браузер Internet Explorer не використовував.
  2. Запустіть Microsoft Visual Studio .NET.
  3. У меню " файл " створитиі виберіть проект.
  4. У Проекті типівнатисніть кнопку " Visual C++ проектах".
  5. У розділі шаблонинатисніть кнопку " Win32 проекту".
  6. У полі " ім'я " введіть перевіркита натисніть кнопку OK.
  7. На сторінці програми майстер Win32 , виберіть Параметри застосунку.
  8. У полі тип програмиклацніть консолі застосункута клацніть Готово. Test.cpp файл створено.
  9. Замінити наявний код у файлі Test.cpp такий код:
    #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
    Примітка. Winhttp.h. log і Winhttp.lib txt входить розробки програмного забезпечення (SDK) платформі Microsoft. Щоб завантажити пакет SDK для платформи, перейдіть на веб-сайт корпорації Майкрософт:
  10. У меню проекту , виберіть Випробування властивостей.
  11. У лівій області вікна двічі клацніть пункт зв'язування.
  12. У розділі зв'язуванняклацніть " вхід".
  13. У правій області вікна клацніть введіть winhttp.lib в області Додаткові залежності і натисніть кнопку OK.
  14. У меню створити виберіть пункт " Побудувати рішення".
  15. Натисніть сполучення клавіш CTRL + F5, щоб запустити програму без налагоджувача. З'являється повідомлення про помилку, описане в розділі "Ознаки".

Посилання


Щоб отримати додаткові відомості відвідайте веб-сайт Microsoft Developer Network (MSDN):