4

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

4

3 回答 3

5

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

bool supportsIpV6 = System.Net.Sockets.Socket.OSSupportsIPv6;
于 2013-02-10T10:24:53.780 回答
0

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

using System.Net.NetworkInformation;

// ...

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

MSDN 上的文档:链接

于 2015-07-15T16:50:18.133 回答
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;
  }
}
于 2015-09-29T18:47:39.143 回答