方法一:利用注册表
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 = newManagementObjectSearcher("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("Gateway{0}",defaultGateway);}}}}