如何检测windows计算机是否运行IPV4或IPV6?

如何检测windows计算机是否运行IPV4或IPV6?,windows,ipv6,ipv4,Windows,Ipv6,Ipv4,是否仍然可以确定windows计算机是否使用本机实用程序、python或php运行IPV6?每台计算机都以标准配置IPv4。IPv6仅在特定计算机上启用。但是如果您解析ifconfig/ipconfig,那么您应该在输出中找到一个IPv4/6地址。如果ipconfig包含一个真正接口的IPv6地址条目,那么您可能已经获得了IPv6连接。在HKLM\SYSTEM\CurrentControlSet\services\TCPIP6中也有有用的注册表项,雅各布的方法是最简单的;您可以通过管道传输结果并

是否仍然可以确定windows计算机是否使用本机实用程序、python或php运行IPV6?

每台计算机都以标准配置IPv4。IPv6仅在特定计算机上启用。但是如果您解析ifconfig/ipconfig,那么您应该在输出中找到一个IPv4/6地址。如果
ipconfig
包含一个真正接口的
IPv6地址
条目,那么您可能已经获得了IPv6连接。在
HKLM\SYSTEM\CurrentControlSet\services\TCPIP6

中也有有用的注册表项,雅各布的方法是最简单的;您可以通过管道传输结果并进行匹配,以查看网络适配器是否具有有效的IPv6地址


此外,您可以通过获取Windows Management Instrumentation类来实现这一点。属性
IPAddress
是与网络适配器关联的所有IP地址的数组,您可以对它们进行匹配,以查看是否存在关联的
IPv6
地址。但是PS有点过火,我会使用Jakob或Wyatt的答案,除非你需要做一些更容易理解和想象的事情(发送HTTP请求;更改一些网络规则;重新启动服务)。

像其他人所说的那样,列举接口并检查IPv6地址。其他选择包括尝试打开IPv6套接字或让Python调用

这就是我通过尝试打开IPv6套接字来解决问题的方法。如果系统没有抛出错误,则它正在使用IPv6

导入套接字
def isIPV6():
ipv6=True
尝试:
s=socket.socket(socket.AF_INET6,socket.SOCK_流)
除:
ipv6=False
返回ipv6

Hans是绝对正确的。您暗示的是xor,但实际上,它是包含或。“运行”不同于“使用…”进行连接。我宁愿使用某种IPv6探测器(可能是谷歌IPv6地址?)。相当多的计算机将配置IPv6地址,但底层网络基础设施不允许IPv6移动到任何地方(想想:您的home gear支持IPv6,但ISP gear不支持)。尝试打开IPv6套接字就可以了,请看我的答案中的代码。错了,IPv6通常是默认启用的,如果一台计算机能够获得可路由的IPv6地址,它将被作为首选。@StanTastic这个答案是6岁时的,当时情况非常不同