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