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

简介: //方法一:利用注册表 using System; using Microsoft.Win32; class CardGrab {     public static void Main()     {         RegistryKey start = Registry.

//方法一:利用注册表

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/

转载请注明:博客园

目录
相关文章
|
7月前
|
C#
C# WinForm发送Email邮件
C# WinForm发送Email邮件
C# WinForm发送Email邮件
|
23天前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
42 4
|
24天前
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
56 2
|
1月前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
【10月更文挑战第27天】计算机主机网关的作用类似于小区传达室的李大爷,负责将内部网络的请求转发到外部网络。当小区内的小不点想与外面的小明通话时,必须通过李大爷(网关)进行联系。网关不仅帮助内部设备与外部通信,还负责路由选择,确保数据包高效传输。此外,网关还参与路由表的维护和更新,确保网络路径的准确性。
48 2
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
7月前
|
安全 网络协议 网络安全
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
9539 0
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
156 0
|
4月前
|
存储 人工智能 搜索推荐
AI 网关基于 IP 地理位置,增强 Prompt 修饰能力
本⽂对 Prompt 的使用方式进行了简单介绍,让大家了解到 Prompt 对于 LLM 的重要性。并尝试在 Prompt 中结合用户 Geo IP 信息,实现 LLM 的个性化回复,提升问答的准确度。
473 15
|
2月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
111 0
|
2月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
106 0