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

时间:2013-02-10 03:34:06

标签: c# ipv6

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

using System.Net.NetworkInformation;

// ...

NetworkInterface[] allInterfaces = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterface firstInterface = allInterfaces[0];
bool interfaceSupportsIPv6 = firstInterface.Supports(NetworkInterfaceComponent.IPv6);

MSDN上的文档:Link

答案 2 :(得分:0)

我已经用这段代码来测试它。请注意,它会测试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;
  }
}