WinHttpGetIEProxyConfigForCurrentUser是否可以从WPAD获取代理

时间:2018-07-30 16:11:51

标签: c++ windows winapi networking proxy

我能够获得在Windows计算机上手动输入到代理设置中的代理数据(选中了//comprehensive process function function processthings (lists,cfunctions){ var flag = false; for (var i=0; i< lists.length; i++){ if (cfunctions(lists[i])){ flag = true; break; }; }; return flag; }; 选项),但我想知道User a proxy server for your LAN是否还会设置字段{{1} },如果在此对话框中选中了WinHttpGetIEProxyConfigForCurrentUserLPWSTR lpszProxy复选框:

proxy settings

如果没有,如何获取当前使用的代理地址?

2 个答案:

答案 0 :(得分:1)

您将在lpszAutoConfigUrl中得到它。

lpszAutoConfigUrl是结构WINHTTP_CURRENT_USER_IE_PROXY_CONFIG的变量,该结构是WinHttpGetIEProxyConfigForCurrentUser的参数

文档链接。

https://docs.microsoft.com/en-us/windows/desktop/api/winhttp/ns-winhttp-winhttp_current_user_ie_proxy_config

用于快速测试的代码:

WINHTTP_CURRENT_USER_IE_PROXY_CONFIG pProxyConfig;
pProxyConfig.fAutoDetect = TRUE;
WinHttpGetIEProxyConfigForCurrentUser(&pProxyConfig);

答案 1 :(得分:0)

WinHttpGetIEProxyConfigForCurrentUser()可用于确定是否同时存在:

  • 启用了“自动检测设置”(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG结构的成员'fAutoDetect')和
  • 设置“自动配置脚本”(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG结构的成员“ lpszAutoConfigUrl”)

但是,要获取特定端点的代理地址本身,应使用 WinHttpGetProxyForUrl()。 如果您已经从IE Internet选项中读取了“自动配置脚本”,则可以这样使用它:

WINHTTP_AUTOPROXY_OPTIONS autoProxyOptions= {0};
WINHTTP_PROXY_INFO proxyInfo= {0};

PCWSTR endpointUrl = <URL, that you need proxy for>;
autoProxyOptions.lpszAutoConfigUrl = <auto config address obtain from WINHTTP_CURRENT_USER_IE_PROXY_CONFIG>;
.
.    //set suitable autoProxyOptions flags
.

if (!WinHttpGetProxyForUrl(hSession, endpointUrl, &autoProxyOptions, &proxyInfo))
{
    GetLastError();
}