获取网卡信息
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