症状

如果您的计算机从未运行 Microsoft Internet Explorer 并且在任何程序中使用WinHttpGetIEProxyConfigForCurrentUser函数,您会收到以下错误消息:

ERROR_FILE_NOT_FOUND

原因

WinHttpGetIEProxyConfigForCurrentUser函数使用以下注册表子项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet SettingsInternet 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 平台软件开发工具包 (SDK)。若要下载平台 SDK,请访问下面的 Microsoft 网站:

  10. 项目菜单上,单击测试属性

  11. 在左窗格中,双击链接器

  12. 链接器,单击输入

  13. 在右窗格中,在附加依赖项字段中,键入winhttp.lib ,然后单击确定

  14. 单击生成菜单上的生成解决方案

  15. 按 CTRL + F5 以运行此程序时没有调试器。您会收到在"症状"一节中提到的错误消息。

参考

有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。