zoukankan      html  css  js  c++  java
  • 如何取得本机网卡的型号,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

  • 相关阅读:
    C++雾中风景14:CRTP, 模板的黑魔法
    ClickHouse源码笔记1:聚合函数的实现
    C++雾中风景番外篇4:GCC升级二三事
    C++雾中风景13:volatile解惑
    AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读
    Linux 程序设计1:深入浅出 Linux 共享内存
    C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
    C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试
    C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
    用TensorFlow搭建一个万能的神经网络框架(持续更新)
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/CSharp_HowTo_IP_NetCard.html
Copyright © 2011-2022 走看看