C# 获取本机IP且过滤非真实网卡(如虚拟机网卡)

本文介绍了一种使用C#编程语言通过过滤虚拟网卡来获取计算机上真实网卡IP地址的方法。通过实例展示了如何利用Win32_NetworkAdapterConfiguration类遍历并筛选出有效的IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Management;  
  
namespace _15获取本机IP_过滤非真实网卡_  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            List<string> listIP = new List<string>();  
            ManagementClass mcNetworkAdapterConfig = new ManagementClass("Win32_NetworkAdapterConfiguration");  
            ManagementObjectCollection moc_NetworkAdapterConfig = mcNetworkAdapterConfig.GetInstances();  
            foreach (ManagementObject mo in moc_NetworkAdapterConfig)  
            {  
                string mServiceName = mo["ServiceName"] as string;  
  
                //过滤非真实的网卡  
                if (!(bool)mo["IPEnabled"])  
                { continue; }  
                if (mServiceName.ToLower().Contains("vmnetadapter")  
                 || mServiceName.ToLower().Contains("ppoe")  
                 || mServiceName.ToLower().Contains("bthpan")  
                 || mServiceName.ToLower().Contains("tapvpn")  
                 || mServiceName.ToLower().Contains("ndisip")  
                 || mServiceName.ToLower().Contains("sinforvnic"))  
                { continue; }  
  
  
                //bool mDHCPEnabled = (bool)mo["IPEnabled"];//是否开启了DHCP  
                //string mCaption = mo["Caption"] as string;  
                //string mMACAddress = mo["MACAddress"] as string;  
                string[] mIPAddress = mo["IPAddress"] as string[];  
                //string[] mIPSubnet = mo["IPSubnet"] as string[];  
                //string[] mDefaultIPGateway = mo["DefaultIPGateway"] as string[];  
                //string[] mDNSServerSearchOrder = mo["DNSServerSearchOrder"] as string[];  
  
                //Console.WriteLine(mDHCPEnabled);  
                //Console.WriteLine(mCaption);  
                //Console.WriteLine(mMACAddress);  
                //PrintArray(mIPAddress);  
                //PrintArray(mIPSubnet);  
                //PrintArray(mDefaultIPGateway);  
                //PrintArray(mDNSServerSearchOrder);  
  
                if (mIPAddress != null)  
                {  
  
                    foreach (string ip in mIPAddress)  
                    {  
                        if (ip != "0.0.0.0")  
                        {  
                            listIP.Add(ip);  
                        }  
                    }  
                }  
                mo.Dispose();  
            }  
  
            PrintList(listIP);  
  
            Console.WriteLine("-- -- The End -- --");  
  
            Console.ReadKey();  
        }  
  
        static void PrintList<T>(List<T> list)   
        {  
            foreach(T item in list)  
            {  
                Console.WriteLine(item);  
            }  
        }  
  
        static void PrintArray<T>(T[] list)  
        {  
            foreach (T item in list)  
            {  
                Console.WriteLine(item);  
            }  
            Console.WriteLine();  
        }  
    }  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值