Windows 11下InternetGetConnectedState始终返回TRUE是否为回归问题?
问题解答
1. 是Bug还是函数误用?
这是Windows 11的已知回归Bug,并非你误用了InternetGetConnectedState函数。
在Windows 10中,该函数会正确区分「RAS服务已安装」和「RAS拨号已建立连接」两种状态;但升级到Windows 11后,只要系统安装了RAS服务(对应0x10标识),哪怕实际拨号连接未激活,函数也会返回TRUE,同时错误带上LAN(0x2)标识,导致误判联网状态。
2. 针对拨号配置的解决方法
- 结合
RasEnumConnections函数验证实际拨号状态:调用该函数枚举当前所有RAS连接,遍历检查连接状态是否为RASCS_Connected,以此确认是否真的建立了拨号联网。 - 替换为更精准的联网检测API:
- 使用
InternetCheckConnectionW:传入一个稳定的公网URL(如https://www.microsoft.com),并设置FLAG_ICC_FORCE_CONNECTION参数,强制检测实际互联网连通性。 - 使用
NetworkListManagerCOM组件:它能准确识别网络连接的类型和是否具备互联网访问能力,适合需要精准判断的场景。
- 使用
- 补充检测方案(备选):发起简单的ICMP请求(ping)辅助验证,但需注意部分网络环境可能禁用ICMP协议,需和其他方法配合使用。
内容的提问来源于stack exchange,提问作者Alexander Dyagilev
相关产品推荐
相关产品推荐

