获取 winhttp.h 的推荐方法是啥?

Posted

技术标签:

【中文标题】获取 winhttp.h 的推荐方法是啥?【英文标题】:What's the recommended way to get winhttp.h?获取 winhttp.h 的推荐方法是什么? 【发布时间】:2010-10-19 14:47:18 【问题描述】:

我们的应用程序将 libcurl 用于 HTTP,并且我们想要访问 Internet Explorer 的代理设置。较早的 Stack Overflow 问题recommends that we use WinHttpGetIEProxyConfigForCurrentUser and WinHttpGetProxyForUrl

不幸的是,winhttp.h 标头似乎没有包含在我们的 Visual C++ 2005 或 Visual Studio 2008 副本中。显然,it's possible to download an updated Platform SDK and install it in Visual C++ 2005,但这是一个非常痛苦的过程,并且不一定适用于较新的版本Visual Studio 版本。

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

【问题讨论】:

【参考方案1】:

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

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

    从here 下载最新的 SDK ISO 映像 - 不用担心它被称为“SDK for Windows Server 2008”,它也适用于 Server 2003、XP 和 Vista。 刻录到 DVD 运行 DVD 上的 setup.exe,选择完全安装并让它运行 1/2 小时左右。 安装后,转到开始 -> 程序 -> 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 后崩溃。 here 和 here 报告了详细信息和解决方法。

【讨论】:

谢谢!是否真的需要完整安装,或者我们可以只安装(例如)相关的 C++ 部分吗? 我忘记了有什么选项——你可能只用 Win32 头文件和库就可以了。但是,我通常会安装所有东西,因为磁盘空间很便宜,但大概你的时间(弄清楚你需要什么组件)不是。 很公平!我们需要在很多机器上安装它,所以我认为可能值得弄清楚我们实际需要哪些组件。感谢您的建议! 要完成这项工作,请参阅:social.msdn.microsoft.com/forums/en-US/windowssdk/thread/… 和 social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/…。您能否在答案中链接到这些页面? 感谢您的链接!接受。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

我同意你并不需要整个东西,但对于许多人来说,找出正确的部分比安装所有部分更昂贵。

以上是关于获取 winhttp.h 的推荐方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在我的类路径中获取 tomcat-jdbc.jar 的推荐方法是啥?

JS获取各种浏览器窗口大小的方法

滚动加载更多

在行上迭代矩阵的推荐方法是啥?

等待 Completable 未来线程完成的推荐方法是啥

使用 MongoDB 存储缩略图的推荐方法是啥?