如何用c#实现获取本机网卡信息

如何用c#实现获取本机网卡信息 及IP
2025-01-18 17:02:41
推荐回答(1个)
回答1:

//方法一:利用注册表using System;using Microsoft.Win32;class CardGrab
{ public static void Main()
{ RegistryKey start = Registry.LocalMachine; RegistryKey cardServiceName, networkKey; string networkcardKey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards"; string serviceKey = "SYSTEM\\CurrentControlSet\\Services\\"; string networkcardKeyName, deviceName; string deviceServiceName, serviceName; RegistryKey serviceNames = start.OpenSubKey(networkcardKey); if (serviceNames == null)
{ Console.WriteLine("Bad registry key"); return; } string[] networkCards = serviceNames.GetSubKeyNames(); serviceNames.Close(); foreach (string keyName in networkCards)
{ networkcardKeyName = networkcardKey + "\\" + keyName; cardServiceName = start.OpenSubKey(networkcardKeyName); if (cardServiceName == null)
{ Console.WriteLine("Bad registry key: {0}", networkcardKeyName); return; } deviceServiceName = (string)cardServiceName.GetValue("ServiceName"); deviceName = (string)cardServiceName.GetValue("Description"); Console.WriteLine("\nNetwork card: {0}", deviceName); serviceName = serviceKey + deviceServiceName + "\\Parameters\\Tcpip"; networkKey = start.OpenSubKey(serviceName); if (networkKey == null)
{ Console.WriteLine(" No IP configuration set"); } else
{ string[] ipaddresses = (string[])networkKey.GetValue("IPAddress"); string[] defaultGateways = (string[])networkKey.GetValue("DefaultGateway"); string[] subnetmasks = (string[])networkKey.GetValue("SubnetMask"); foreach (string ipaddress in ipaddresses)
{ Console.WriteLine(" IP Address: {0}", ipaddress); } foreach (string subnetmask in subnetmasks)
{ Console.WriteLine(" Subnet Mask: {0}", subnetmask); } foreach (string defaultGateway in defaultGateways)
{ Console.WriteLine(" Gateway: {0}", defaultGateway); } networkKey.Close(); } } start.Close(); Console.ReadLine(); }
}
//方法二:使用WMI//当然要先添加System.Management.dll的引用using System;using System.Management;class WMICardGrab
{ public static void Main()
{ ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'"); ManagementObjectCollection queryCollection = query.Get(); foreach (ManagementObject mo in queryCollection)
{ string[] addresses = (string[])mo["IPAddress"]; string[] subnets = (string[])mo["IPSubnet"]; string[] defaultgateways = (string[])mo["DefaultIPGateway"]; Console.WriteLine("Network Card: {0}", mo["Description"]); Console.WriteLine(" MAC Address: {0}", mo["MACAddress"]); foreach (string ipaddress in addresses)
{ Console.WriteLine(" IP Address: {0}", ipaddress); } foreach (string subnet in subnets)
{ Console.WriteLine(" Subnet Mask: {0}", subnet); } foreach (string defaultgateway in defaultgateways)
{
Console.WriteLine(" defaultgateways: {0}", defaultgateway);
}
}
}
}