Проблемы

Если ваш компьютер никогда не работал Microsoft Internet Explorer и использовать функцию WinHttpGetIEProxyConfigForCurrentUser в любой программе, появляется следующее сообщение об ошибке:

ERROR_FILE_NOT_FOUND

Причина

Функция WinHttpGetIEProxyConfigForCurrentUser использует следующий подраздел реестра:

Параметры HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetЭтот подраздел реестра создается при первом запуске Internet Explorer. Если на компьютере не запущена Internet Explorer, этот параметр реестра не существует. Когда вызов функции WinHttpGetIEProxyConfigForCurrentUser в программе, функция ищет этот параметр реестра и не удается найти, и появляется сообщение об ошибке.

Решение

Чтобы устранить эту проблему, запустите Internet Explorer и затем используйте функцию WinHttpGetIEProxyConfigForCurrentUser в любой программе.

Дополнительная информация

Действия по воспроизведению проблемы

  1. Войдите на компьютер, где обозреватель Internet Explorer не используется никогда.

  2. Запустите Microsoft Visual Studio .NET.

  3. В меню файл выберите пункт Создать и выберите Проект.

  4. В области Типы проектоввыберите Проекты Visual C++.

  5. В области Шаблонывыберите Проект Win32.

  6. В поле имя введите Тести нажмите кнопку ОК.

  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 файл и файл Winhttp.lib, включаются в Microsoft Platform software development kit (SDK). Для загрузки пакета Platform SDK, посетите следующий веб-узел корпорации Майкрософт:

    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

  10. В меню проект выберите команду Свойства теста.

  11. В левой области дважды щелкните Компоновщик.

  12. Компоновщикустановите для входных данных.

  13. В правой области в поле Дополнительные зависимости введите winhttp.lib и нажмите кнопку ОК.

  14. В меню Построение выберите команду Построить решение.

  15. Нажмите сочетание клавиш CTRL + F5, чтобы запустить программу без отладчика. Появляется сообщение об ошибке, описанное в разделе «Проблема».

Ссылки

Дополнительные сведения см. на следующей веб-странице узла MSDN:

http://msdn2.microsoft.com/en-us/library/aa384096.aspx

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?

Что повлияло на вашу оценку?

Добавите что-нибудь? Это необязательно

Спасибо за ваш отзыв!

×