使用C#检查Windows 7上是否启用了IPv6

我正在尝试使用C#编写一个程序,作为我公司的多function工具。 我们在此工具中想要的一件事是确定IPv6是否已启用/绑定到我们的Windows 7计算机上的本地连接网络适配器。 我不是要找一个地址,只是想知道它是在该适配器上启用还是禁用。 我不确定如何编码。 从我在网上找到的,似乎我应该使用System.Net.Configuration和Ipv6Element来检查它是否已启用,但我不知道如何编码它。 我希望能够显示它是否在文本框中启用或禁用,所以我猜我会使用布尔值。 有人能指出我正确的方向吗? 谢谢!

您可以使用此属性测试操作系统是否支持IPv6:

bool supportsIpV6 = System.Net.Sockets.Socket.OSSupportsIPv6; 

您可以使用System.Net.NetworkInformation命名空间使用以下代码查询您要求的确切内容(如果为特定网络适配器启用或禁用IPv6):

 using System.Net.NetworkInformation; // ... NetworkInterface[] allInterfaces = NetworkInterface.GetAllNetworkInterfaces(); NetworkInterface firstInterface = allInterfaces[0]; bool interfaceSupportsIPv6 = firstInterface.Supports(NetworkInterfaceComponent.IPv6); 

MSDN上的文档: 链接

我用这段代码来测试它。 请注意,它会测试IPV6是否已启用,如果网卡与IPV6兼容则不会:

 public static bool InterfaceHasIpv6Enabled(NetworkInterface @interface) { try { var properties = @interface.GetIPProperties().GetIPv6Properties(); return properties.Index > -999; } catch (System.Net.NetworkInformation.NetworkInformationException) { return false; } catch (Exception ex) { throw ex; } }