当 WinINet 应用程序更改代理策略时,写入持久值与促使现有使用方重新考虑它是两项独立的操作。请使用与所更改范围相匹配的 WinINet 选项。

选项文档记载的用途
INTERNET_OPTION_SETTINGS_CHANGED, 39通知系统注册表设置已更改,以便在随后的 InternetConnect 调用中加以验证
INTERNET_OPTION_REFRESH, 37为相应的 InternetOpen 句柄重新读取代理数据
INTERNET_OPTION_PROXY_SETTINGS_CHANGED, 95通知 WinINet 实例代理设置已更改

这些选项通过 InternetSetOption 使用。其对句柄和缓冲区的要求取决于所选选项。例如,代理设置通知的文档说明:向所有可用实例发出警报时,缓冲区为空且缓冲区长度为零。

在实现中将设置更新、所选句柄和通知放在一起。检查每个布尔结果,并在调用失败时获取 Windows 错误。一个忽略所有返回值的辅助函数无法确定更改或其通知是否成功。

这是 WinINet 的行为。它不会重新配置不相关的 WinHTTP 会话,也不会重新配置应用程序的显式代理对象。它也不会将已建立的 TCP 连接移到其他中介。检查已应用的路径时,应评估新建的相关连接。如果其他应用程序仍在使用旧路径,请查明其配置来源、协议栈和账户。

相关文章