检查在IPv6在Windows 7中使用C#启用(Checking if IPv6 is enabl

2019-07-19 16:59发布

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

Answer 1:

您可以测试使用该属性的OS是否支持IPv6:

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


Answer 2:

你可以查询你要的到底是什么用的System.Net.NetworkInformation命名空间下面的代码(如果启用IPv6或特定网络适配器禁用):

using System.Net.NetworkInformation;

// ...

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

文档在MSDN: 链接



Answer 3:

我已经使用这个代码来测试它。 请注意,它测试是否启用了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;
  }
}


文章来源: Checking if IPv6 is enabled on Windows 7 using C#
标签: c# ipv6