Windows 设置窗口可能显示新的代理,而某个应用仍在走原来的路径。先确定你观察的是哪一种状态:

观察它能确定什么
新值已存储所选的用户或计算机配置发生了变化
客户端读取了新配置该客户端已刷新它使用的来源
新连接使用了新路径刷新后的策略影响了新的路由决策

WinINet 为每个连接提供 Internet Options 和通知,包括 INTERNET_OPTION_SETTINGS_CHANGED 和 INTERNET_OPTION_REFRESH。对于正在更新的设置,应使用受支持的配置 API,并报告其错误。仅写入注册表可能让客户端保留过时的视图;通用的设置广播并不会迫使每个网络库重新读取它。

接下来确定受影响应用的协议栈和账户。对于 .NET 9 Windows 客户端,系统代理的刷新生命周期与显式代理对象和环境默认值不同。WinHTTP 以及使用私有代理设置的客户端属于另外的情况。在当前用户下所做的更改,几乎说明不了以其他账户运行的服务;WinINet 刷新也无法为任意套接字提供代理支持。

最后,要把新建连接与更早建立的现有连接或隧道区分开。更改设置并不会自动迁移那条流。对外提供代理更改的应用,需要明确的保存、通知和新连接策略。

相关文章