Checking if IPv6 is enabled on Windows 7 using C#

前端 未结 3 828
梦谈多话
梦谈多话 2021-01-19 19:06

I am trying to write a program using C# to act as a multipurpose tool for my company. One of the things we would like in this tool is to determine if IPv6 is enabled/binded

相关标签:
3条回答
  • 2021-01-19 19:10

    You can query for exactly what you asked for (if IPv6 is enabled or disabled for a specific network adapter) with the following code using the System.Net.NetworkInformation namespace:

    using System.Net.NetworkInformation;
    
    // ...
    
    NetworkInterface[] allInterfaces = NetworkInterface.GetAllNetworkInterfaces();
    NetworkInterface firstInterface = allInterfaces[0];
    bool interfaceSupportsIPv6 = firstInterface.Supports(NetworkInterfaceComponent.IPv6);
    

    Documentation on MSDN: Link

    0 讨论(0)
  • 2021-01-19 19:15

    You can test whether the OS supports IPv6 by using this property:

    bool supportsIpV6 = System.Net.Sockets.Socket.OSSupportsIPv6;
    
    0 讨论(0)
  • 2021-01-19 19:33

    I have used this code to test it. Notice that it tests if the IPV6 is enabled, and not if the Network Card is IPV6 compatible:

    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;
      }
    }
    
    0 讨论(0)
提交回复
热议问题