0

我正在编写一个使用 InternetQueryOption API 查询代理设置的程序。

查看INTERNET_PER_CONN_OPTION http://msdn.microsoft.com/en-us/library/windows/desktop/aa385145%28v=vs.85%29.aspx的 Windows 文档

文档中有注释

Windows 7 及更高版本:
支持 Internet Explorer 8 的客户端应使用 INTERNET_PER_CONN_FLAGS_UI 查询连接类型。如果此查询失败,则系统正在运行以前版本的 Internet Explorer,客户端应使用 INTERNET_PER_CONN_FLAGS 再次查询。

无论 Internet Explorer 的版本如何,都使用 INTERNET_PER_CONN_FLAGS 恢复连接类型。

我已经在运行 IE9 的 Win7 64 位机器上进行了测试INTERNET_PER_CONN_FLAGSINTERNET_PER_CONN_FLAGS_UI一切似乎都运行良好。

和功能的文档INTERNET_PER_CONN_FLAGSINTERNET_PER_CONN_FLAGS_UI似乎相同。

那么使用的原因是什么INTERNET_PER_CONN_FLAGS_UI呢?注释是否表明它仅适用于 IE8 或 IE8 及更高版本。

我的程序需要支持从运行 IE6 的 WinXP 到当前 Win7 机器的所有内容。所以我不清楚我应该使用什么。

这是我的代码

INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[1];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_FLAGS;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = 0;
List.dwOptionCount = sizeof(Option)/sizeof(Option[0]);
List.dwOptionError = 0;

Option[0].Value.pszValue = 0;

List.pOptions = Option;

InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, &nSize);
  1. 如果失败,我应该更改INTERNET_PER_CONN_FLAGSINTERNET_PER_CONN_FLAGS_UI& 然后再次调用 with吗?INTERNET_PER_CONN_FLAGSINTERNET_PER_CONN_FLAGS_UI

  2. 这究竟是什么意思

    无论 Internet Explorer 的版本如何,都使用 INTERNET_PER_CONN_FLAGS 恢复连接类型。

这是否意味着INTERNET_PER_CONN_FLAGS_UI仅与InternetQueryOption和相关InternetSetOption,我应该始终使用INTERNET_PER_CONN_FLAGS.

4

2 回答 2

2

INTERNET_PER_CONN_FLAGS_UI 返回代理设置,如工具 > Internet 选项 > 连接 > LAN 设置中所示。

这些设置可能与 INTERNET_PER_CONN_FLAGS 返回的设置不同,如果 WinINET 认为当前网络不使用 WPAD,它将“隐藏”“自动检测”设置。这是一项性能优化,有关详细信息,请参阅https://stackoverflow.com/a/5138232/126229

一般来说,您应该只在向用户显示设置时使用 INTERNET_PER_CONN_FLAGS_UI;如果您的目标是确定应该使用什么代理,请使用 INTERNET_PER_CONN_FLAGS。

于 2014-02-19T19:56:03.647 回答
1

根据您引用的文档和您想要实现的目标的描述,在我看来,您的问题 1 和 2 的答案是Yesand Yes

但是,与所有 MS 文档一样,它可能不清楚、过时或完全错误。因此,我建议您从问题中概述的假设开始,并使用 VM 在 WinXP/IE6、Win8/IE10 等平台的各种组合上测试代码原型。凭经验进行操作可能会让您更好地了解真实事实与文档的区别,并且还将为您提供一些测试环境以供进一步工作。

于 2013-03-24T11:06:38.860 回答