天天看点

C#--WinForm获取本机网卡的型号,IP地址,子网掩码和网关

//方法一:利用注册表

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.Management;

class WMICardGrab

        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);

博客园大道至简

<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>

转载请注明:博客园

继续阅读