10

我们的应用程序将 libcurl 用于 HTTP,并且我们想要访问 Internet Explorer 的代理设置。较早的 Stack Overflow 问题建议我们使用WinHttpGetIEProxyConfigForCurrentUserandWinHttpGetProxyForUrl

不幸的是,winhttp.h无论是 Visual C++ 2005 还是 Visual Studio 2008,我们的副本中似乎都没有包含标头。显然,可以下载更新的 Platform SDK 并将其安装在 Visual C++ 2005中,但这是一个非常痛苦的过程,而且它没有不一定适用于较新版本的 Visual Studio。

从 C++ 访问 WinHTTP 5.1 API 是否有良好的、受良好支持的方法?还是我们应该避免使用这些 API?

4

3 回答 3

15

从 C++ 访问 WinHTTP 5.1 API 的最佳且受良好支持的方法是通过 Windows SDK(Platform SDK 的新名称)并使用您提到的那些 API。

您链接到的文章表明安装 SDK 很困难 - 好消息是它是 2006 年的一篇旧文章,现在事情要容易得多。只需执行以下操作:

  1. 从这里下载最新的 SDK ISO 映像- 不要担心它被称为“SDK for Windows Server 2008”,它也适用于 Server 2003、XP 和 Vista。
  2. 刻录到 DVD
  3. 运行 DVD 上的 setup.exe,选择完全安装并让它运行 1/2 小时左右。
  4. 安装后,转到开始 -> 程序 -> Microsoft Windows SDK -> Visual Studio 注册 ->将 Windows SDK 与 Visual Studio 2005 集成

甚至可能会在安装过程中提示您运行集成工具 - 我安装它已经有一段时间了,所以我记不清了。

然后,Visual C++ 编译器将能够在适当的文件夹中找到 winhttp.h 和 winhttp.lib。

更新像往常一样,事情从来没有像他们应该的那样简单。EMK 指出,Windows SDK 配置工具无法与 Visual Studio 2008(任何版本)一起正常工作,并在安装 Visual Studio 2008 SP1 后崩溃。此处此处报告了详细信息和解决方法。

于 2009-04-15T14:56:11.713 回答
6

如果有人看到这篇文章并对获得 winhttp 可以安装的最小组件感到好奇,安装 Microsoft Windows Core SDK > Build Environment > Build Environment (x86 32-bit) 对我有用。

于 2010-04-14T08:37:01.967 回答
2

您绝对不需要整个 SDK 只需下载正确的部分,请参阅 MSDN 进行选择。

于 2009-04-15T22:36:05.617 回答