Ознаки
Якщо на комп'ютері інстальовано ніколи не виконувати 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 в будь-яку програму.
Додаткові відомості
Відтворення проблеми
-
Увійдіть на комп'ютер, коли браузер Internet Explorer не використовував.
-
Запустіть Microsoft Visual Studio .NET.
-
У меню " файл " створитиі виберіть проект.
-
У Проекті типівнатисніть кнопку " Visual C++ проектах".
-
У розділі шаблонинатисніть кнопку " Win32 проекту".
-
У полі " ім'я " введіть перевіркита натисніть кнопку OK.
-
На сторінці програми майстер Win32 , виберіть Параметри застосунку.
-
У полі тип програмиклацніть консолі застосункута клацніть Готово. Test.cpp файл створено.
-
Замінити наявний код у файлі 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 для платформи, перейдіть на веб-сайт корпорації Майкрософт:
-
У меню проекту , виберіть Випробування властивостей.
-
У лівій області вікна двічі клацніть пункт зв'язування.
-
У розділі зв'язуванняклацніть " вхід".
-
У правій області вікна клацніть введіть winhttp.lib в області Додаткові залежності і натисніть кнопку OK.
-
У меню створити виберіть пункт " Побудувати рішення".
-
Натисніть сполучення клавіш CTRL + F5, щоб запустити програму без налагоджувача. З'являється повідомлення про помилку, описане в розділі "Ознаки".
Посилання
Щоб отримати додаткові відомості відвідайте веб-сайт Microsoft Developer Network (MSDN):