我想写使用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#