有线网卡与无线网卡、物理网卡与虚拟网卡的区分

获取当前活跃状态的网卡MAC地址、物理地址

Wmic命令:Win32_NetworkAdapterWin32_NetworkAdapterConfiguration。

其中cmd命令行执行:

1. Wmic Path Win32_NetworkAdapter get GUID,MACAddress,NetEnabled,PhysicalAdapter,Index

备注:

GUID:连接唯一标识;

MACAddress:网卡地址;

NetEnabled: 是否启用了适配器,True为启用,False为禁用;

PhysicalAdapter: 适配器是否物理或逻辑适配器,True为物理,False为逻辑;

Index: 网络适配器的索引号,存储在系统注册表中。注册表路径Win32Registry|System\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}.

Msdn地址:

https://msdn.microsoft.com/en-us/library/aa394216(v=vs.85).aspx

要求:


Minimum supported client


Windows Vista


Minimum supported server


Windows Server 2008


Namespace


Root\CIMV2


MOF


CIMWin32.mof


DLL


CIMWin32.dll

2. Wmic Path Win32_NetworkAdapterConfiguration get IPEnabled,MACAddress,SettingID, IPAddress, IPSubnet,Index

备注:

IPEnabled: 是否启用了适配器,True为启用,False为禁用;

MACAddress:网卡地址;

SettingID: 连接唯一标识;

IPAddress:IP地址;

IPSubnet:子网掩码;

Index: Windows网络适配器配置的索引号,在有多个配置时使用。注册表路径Win32Registry|System\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318};

Msdn地址:

https://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx#

要求:


Minimum supported client


Windows Vista


Minimum supported server


Windows Server 2008


Namespace


Root\CIMV2


MOF


CIMWin32.mof


DLL


CIMWin32.dll

参数匹配关系:


Win32_NetworkAdapter


Win32_NetworkAdapterConfiguration


GUID


SettingID


NetEnabled


IPEnabled


MACAddress


MACAddress


Index


Index

区分物理网卡和虚拟网卡

通过“Characteristics”这个值来确定网卡的类型是虚拟网卡还是物理网卡。

Characteristics 值在注册表在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【连接索引号】\下,在windows中,Characteristics 的取值如下,Characteristics项可以有1个或多个如下的值(多值应计算总和):【备注:在Windows7和Windows10下确认,Characteristics为dword,不可能多个值,这里的多个值,计算总和暂时未知。】


0x1


NCF_VIRTUAL


说明组件是个虚拟适配器


0x2


NCF_SOFTWARE_ENUMERATED


说明组件是一个软件模拟的适配器


0x4


NCF_PHYSICAL


说明组件是一个物理适配器


0x8


NCF_HIDDEN


说明组件不显示用户接口


0x10


NCF_NO_SERVICE


说明组件没有相关的服务(设备驱动程序)


0x20


NCF_NOT_USER_REMOVABLE


说明不能被用户删除(例如,通过控制面板或设备管理器)


0x40


NCF_MULTIPORT_INSTANCED_ADAPTER


说明组件有多个端口,每个端口作为单独的设备安装。每个端口有自己的hw_id(组件ID) 并可被单独安装,这只适合于EISA适配器


0x80


NCF_HAS_UI


说明组件支持用户接口(例如,Advanced Page或Customer Properties Sheet)


0x400


NCF_FILTER


说明组件是一个过滤器

如果是虚拟网卡:Characteristics & NCF_VIRTUAL ==NCF_VIRTUAL

如果是物理网卡:Characteristics & NCF_PHYSICAL ==NCF_PHYSICAL

Example:

Characteristics的值为0x84,则0x84&0x4=0x4,则表示该网卡为物理网卡。

备注:

该方法在实体机上测试,可以区分开物理网卡和虚拟网卡;但是,在虚拟机系统中,也可以找到物理网卡。

参考地址:

http://blog.csdn.net/jianghui3132749/article/details/4868350

总结:

获取当前活跃的物理网卡地址,可以直接使用Win32_NetworkAdapter,Win32_NetworkAdapterConfiguration主要作为一个参考比较。另外,命令支持系统最低版本有所限制,Windows Vista及以上,服务器版本Windows Server 2008及以上。

判断无线网卡和有线网卡

1. 注册表路径:HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\【连接唯一标识】\Connection

路径下的键值:MediaSubType,如果Value=2,表示无线网卡。

2. 注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【连接索引号】\Ndi\Interfaces

路径下的键值:LowerRange,如果Value包含wifi或者wlan,(验证的两台设备Value=“wlan,ethernet,vwifi”),表示无线网卡。

总结:如上两种方法判断是否无线网卡的判断标准, 对于标准的适用性,特殊情况,如VPN、虚拟网卡等情况是否有能很好的支持,仍然需要验证。另外,3G网卡等尚未在判断标准中,暂不支持。

备注:通过“netsh wlan set hostednetwork mode=allow ssid=Simnovo key=SimnovoWifi”命令创建的无线虚拟网卡,在判断条件1,2下,均验证为无线网卡,但是结合Characteristics的值判断物理网卡,可以区分出来该网卡是无线虚拟网卡。

通过物理网卡条件以及无线网卡条件结合判断,采用wmic和注册表方式相对比较稳定。

判断流程

1. Win7以上设备:执行Wmic Path Win32_NetworkAdapter get GUID,MACAddress,NetEnabled,PhysicalAdapter,Index,获取NetEnabled和PhysicalAdapter均为True的项。其中NetEnabled获取的True是为了获取当前使用中的网卡。GUID为连接唯一标识,Index为连接索引号。

XP设备:由于XP对Win32_NetworkAdapter部分字段不支持,采用Wmic Path Win32_NetworkAdapterConfiguration get IPEnabled,MACAddress,SettingID, IPAddress, IPSubnet,Index,获取IPEnabled为True的想,其中,IPEnabled获取的True是为了获取当前使用中的网卡。SettingID为连接唯一标识,Index为连接索引号。

2. 根据1中获取到的连接索引号,注册表路径“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【连接索引号】\”下,判断Characteristics,筛选出物理网卡

3. 根据2中获取的物理网卡,采用判断有线网卡和无线网卡两中方案进行筛选,获取最终的当前使用中的网卡为有线物理网卡还是无线物理网卡。

验证结果【图片有些小,点击链接查看】

联想win8.1 WIFI 【正确】

联想win8 WIFI 【正确】

三星win8 WIFI 【正确】

XPE有线 【正确】

联想win7有线 【正确】

Win10 有线 【正确】

HP 有线 【正确】

HP wifi 【正确】

HP 3G: 【错误】

时间: 2024-11-05 12:21:50

有线网卡与无线网卡、物理网卡与虚拟网卡的区分的相关文章

C#如何获取物理网卡,虚拟网卡,以及无线网卡

就不废话了,直接上代码 /// <summary></summary> /// 显示本机各网卡的详细信息 /// <summary></summary> public static void ShowNetworkInterfaceMessage() { NetworkInterface[] fNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInt

图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚拟化"的支持,不光是为了支持"虚拟机"技术,更多的是给了用户和程序员更多的选择.       这些对网络虚拟化的支持技术包括任何重量级的虚拟化技术,比较重的比如对虚拟机技术的支持,轻量级的则是net namespace技术.近期的工作基于net namespace技术,关于这个技

半截水晶头线接激活本地虚拟网卡

可有可无的小方法~ 很多人在用虚拟机的时候,有时虚拟网卡不够用,又没有可用网线插来激活本地网卡时,这时可以自制一个水晶头加半截网线(或者从水晶头还 能用的废掉的网线上截取下来如下图)来激活本地网卡,多增加一个可用虚拟网卡(虽然第一次在当时无法解决(^-^)) 制作方法:截取或制作成水晶头后,将线皮剥掉至漏出铜线,将线序颜色排列成T-568B的线序(如下图) 以10/100兆太网网卡为例的DTE类型接口引脚定义为(对应上图从左到右): 1-TX+Tranceive  Data+  (发信号+)  

关闭Windows 系统当前连接的Wifi以及判断物理\虚拟网卡,有线\无线网卡

1.关闭wifi ,调用Api [DllImport("Wlanapi.dll", SetLastError = true)] public static extern uint WlanDisconnect(IntPtr hClientHandle, ref Guid pInterfaceGuid, IntPtr pReserved); 2.获取当前连接wifi 网卡句柄 The WlanOpenHandle function opens a connection to the se

删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲突却找不到那个与之冲突的网卡:网络虚拟化失败后出现无法删除的虚拟网卡等等.下面我们就来总结一下如何删除这些可见或不可见的Ghost一样的网卡. 一.识别各类网络设备和网络连接 由于网络虚拟化会在物理机上新增许多虚拟网络设备(包括虚拟网卡),情况会变得复杂,因而首先我们需要分清他们.当然如果没有进行网

笔记本有线网卡和无线网卡同时联网方法

笔记本有线网卡和无线网卡同时联网方法,有线走内网,无线走外网.(使用前提公司内网跟外网不在同一个局域网里) 外网IP地址:10.0.0.76 子网掩码:255.255.255.0  网关:10.0.0.1 内网IP地址:192.168.100.63  子网掩码:255.255.255.0 网关:192.168.103.26 两张网卡默认有路由表,使用route print查看时会看到 Network  Destination   Netmask       Gateway            

GetAdaptersInof获取本地连接的网卡信息,排除无线网卡和虚拟网卡

/* 只获取本地连接的网卡信息,并不获取无线网卡和虚拟网卡的信息,要想获取无线网卡的信息,需把if(strstr(pAdapter->Description,"PCI")>0 && pAdapter- >Type==MIB_IF_TYPE_ETHERNET)改成if(strstr(pAdapter->Type==71),若要获取虚拟网卡的信息,需把if(strstr(pAdapter->Description,"PCI"

Linux下双物理网卡设置成虚拟网卡

为了提供网络的高可用我们需要将多块网卡绑定设置成一块虚拟的网卡对外提供服务,这样可以防止一块网卡损坏或者防止网线连接故障造成的连接中断. 下面我们使用eth0与eth1来虚拟成为bond0为例:------绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片. 操作平台:OLE Linux 6.6 1.创建虚拟网络接口配置文件ifcfg-bond0,并指定网卡IP:vi /etc/sysconfig/ network-scripts/ifcfg-bond0 cat /etc/s

SylixOS USB虚拟网卡框架

1. USB子系统简介 1.1      USB简介 USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.是应用在PC领域的接口技术.USB接口支持设备的即插即用和热插拔功能.USB是在1994年底由英特尔.康柏.IBM.Microsoft等多家公司联合提出的. 1.2      USB虚拟网卡框架 1.2.1   普通网卡与USB网卡框架对比 如图 11所示,普通网卡驱动与USB网卡驱动相比最大的区别是,USB网