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;

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

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

原文地址:https://www.cnblogs.com/jams742003/p/1271063.html