• C# 获取网卡信息


    获取网卡信息

            static void Main(string[] args)
            {
                ShowNetworkInterfaces();
                Console.Read();
            }
    
            public static void ShowNetworkInterfaces()
            {
                IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                Console.WriteLine("Interface information for {0}.{1}     ",
                        computerProperties.HostName, computerProperties.DomainName);
                if (nics == null || nics.Length < 1)
                {
                    Console.WriteLine("  No network interfaces found.");
                    return;
                }
    
                Console.WriteLine("  Number of interfaces .................... : {0}", nics.Length);
                foreach (NetworkInterface adapter in nics)
                {
                    #region " 网卡类型 "
                    string fCardType = "未知网卡";
                    string fRegistryKey = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" + adapter.Id + "\Connection";
                    RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
                    if (rk != null)
                    {
                        // 区分 PnpInstanceID   
                        // 如果前面有 PCI 就是本机的真实网卡  
                        // MediaSubType 为 01 则是常见网卡,02为无线网卡。  
                        string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
                        int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
                        if (fPnpInstanceID.Length > 3 &&
                            fPnpInstanceID.Substring(0, 3) == "PCI")
                            fCardType = "物理网卡";
                        else if (fMediaSubType == 1)
                            fCardType = "虚拟网卡";
                        else if (fMediaSubType == 2)
                            fCardType = "无线网卡";
                    }
                    #endregion
                    #region IP 版本 
                    string versions = "";
                    // Create a display string for the supported IP versions.
                    if (adapter.Supports(NetworkInterfaceComponent.IPv4))
                    {
                        versions = "IPv4";
                    }
                    if (adapter.Supports(NetworkInterfaceComponent.IPv6))
                    {
                        if (versions.Length > 0)
                        {
                            versions += " ";
                        }
                        versions += "IPv6";
                    }
                    #endregion IP 版本
    
                    IPInterfaceProperties properties = adapter.GetIPProperties();
                    Console.WriteLine();
                    Console.WriteLine(fCardType + " : " + adapter.Description);
                    Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));
                    Console.WriteLine("  Id ...................................... : {0}", adapter.Id); // 获取网络适配器的标识符  
                    Console.WriteLine("  Name .................................... : {0}", adapter.Name); // 获取网络适配器的名称  
                    Console.WriteLine("  Description ............................. : {0}", adapter.Description); // 获取接口的描述  
                    Console.WriteLine("  Interface type .......................... : {0}", adapter.NetworkInterfaceType); // 获取接口类型  
                    Console.WriteLine("  IP version .............................. : {0}", versions);
                    Console.WriteLine("  IP Properties ........................... : {0}", string.Join(" ; ", adapter.GetIPProperties().AnycastAddresses.Select(o => o.Address.ToString()).ToArray()));
                    Console.WriteLine("  IP Properties ........................... : {0}", string.Join(" ; ", adapter.GetIPProperties().DhcpServerAddresses.Select(o => o.ToString()).ToArray()));
                    Console.WriteLine("  IP Properties ........................... : {0}", string.Join(" ; ", adapter.GetIPProperties().DnsAddresses.Select(o => o.ToString()).ToArray()));
                    Console.WriteLine("  IP Properties ........................... : {0}", adapter.GetIPProperties().DnsSuffix);
                    Console.WriteLine("  IP Properties ........................... : {0}", string.Join(" ; ", adapter.GetIPProperties().GatewayAddresses.Select(o => o.Address.ToString()).ToArray()));
                    Console.WriteLine("  IP Properties ........................... : {0}", adapter.GetIPProperties().IsDnsEnabled);
                    Console.WriteLine("  IP Properties ........................... : {0}", adapter.GetIPProperties().IsDynamicDnsEnabled);
                    Console.WriteLine("  IP Properties ........................... : {0}", string.Join(" ; ", adapter.GetIPProperties().MulticastAddresses.Select(o => o.Address.ToString()).ToArray()));
    
                    // The adapters for IP address.
                    IPInterfaceProperties fIPInterfaceProperties = adapter.GetIPProperties();
                    UnicastIPAddressInformationCollection UnicastIPAddressInformationCollection = fIPInterfaceProperties.UnicastAddresses;
                    foreach (UnicastIPAddressInformation UnicastIPAddressInformation in UnicastIPAddressInformationCollection)
                    {
                        if (UnicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork)
                            Console.WriteLine("  Ip Address .............................. : {0}", UnicastIPAddressInformation.Address); // Ip 地址  
                    }
                    Console.WriteLine("  Physical Address ........................ : {0}", adapter.GetPhysicalAddress().ToString()); // MAC 地址  
                    Console.WriteLine("  Operational status ...................... : {0}", adapter.OperationalStatus); // 获取网络连接的当前操作状态  
                    Console.WriteLine("  DNS suffix .............................. : {0}", properties.DnsSuffix);
                    Console.WriteLine("  DNS enabled ............................. : {0}", properties.IsDnsEnabled);
                    Console.WriteLine("  Dynamically configured DNS .............. : {0}", properties.IsDynamicDnsEnabled);
                    Console.WriteLine("  Receive Only ............................ : {0}", adapter.IsReceiveOnly);
                    Console.WriteLine("  Multicast ............................... : {0}", adapter.SupportsMulticast);
                    Console.WriteLine("  Speed ................................... : {0}", adapter.Speed); // 网络接口的速度  
    
                    //// The following information is not useful for loopback adapters.
                    //if (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback)
                    //{
                    //    continue;
                    //}
                    if (adapter.Supports(NetworkInterfaceComponent.IPv4))
                    {
                        IPv4InterfaceProperties ipv4 = properties.GetIPv4Properties();
                        if (ipv4 != null)
                        {
                            Console.WriteLine("  MTU ..................................... : {0}", ipv4.Mtu);
                            Console.WriteLine("  MTU Index ............................... : {0}", ipv4.Index);
                            Console.WriteLine("  MTU Automatic Private Addressing Active . : {0}", ipv4.IsAutomaticPrivateAddressingActive);
                            Console.WriteLine("  MTU Automatic Private Addressing Enabled. : {0}", ipv4.IsAutomaticPrivateAddressingEnabled);
                            Console.WriteLine("  MTU Dhcp Enabled ........................ : {0}", ipv4.IsDhcpEnabled);
                            Console.WriteLine("  MTU Forwarding Enabled .................. : {0}", ipv4.IsForwardingEnabled);
                            if (ipv4.UsesWins)
                            {
                                IPAddressCollection winsServers = properties.WinsServersAddresses;
                                if (winsServers.Count > 0)
                                {
                                    Console.WriteLine("  WINS Servers ............................ : {0}", winsServers);
                                    Console.WriteLine("  WINS Servers Read Only .................. : {0}", winsServers.IsReadOnly);
                                }
                            }
                        }
                    }
    
                    Console.WriteLine();
                }
            }
    View Code

  • 相关阅读:
    使用Skaffold一键将项目发布到Kubernetes
    线性代数回头看——线性方程组
    Python 函数 初学者笔记
    Python 用户输入&while循环 初学者笔记
    Python If&字典 初学者笔记
    Python 变量&列表 初学者笔记
    SQL 常见优化指南
    垃圾回收机制
    MySQL 前缀索引
    MySQL 常用优化
  • 原文地址:https://www.cnblogs.com/GoCircle/p/12517592.html
Copyright © 2020-2023  润新知