介绍

Windows 任务栏中的网络连接图标变成了无法联网状态,但实际是可以上网的。虽然可以上网,但是会影响某些应用程序的联网状态判断,例如 Unity 的 Application.internetReachability API。

环境

  • Windows 10 22H2
  • Windows 11 22H2

尝试

少数派的这篇文章提到了两种方法:一是关闭联网检测,实测无效;二是修改联网地址,实测有效。

实测发现所有关闭联网检测的方法都无效,注册表尝试了修改多个联网检测相关的键值,组策略也不行。

分析

如果不想修改联网测试的地址 msftncsi.com,那么就需要检查一下为什么原来的地址不行。

检测是否联网的逻辑 IPv4 是访问 ActiveWebProbeHost + ActiveWebProbePath,结果必须是 ActiveWebProbeContent,IPv6 同理。

使用 curl 测试一下现在的配置:

1
2
$ curl http://msftconnecttest.com/connecttest.txt
curl: (6) Could not resolve host: msftconnecttest.com

增加 www 子域名试一下

1
2
$ curl http://www.msftconnecttest.com/connecttest.txt
Microsoft Connect Test%

应该是微软不小心把 msftconnecttest.com DNS A记录删除了,将配置中的域名增加 www. 前缀就正常了

其他

如果发现默认的 http://www.msftconnecttest.com/connecttest.txt 无法访问,可以尝试 http://www.msftncsi.com/ncsi.txt,具体方法参考上面的少数派链接。