怎样获得当前联网的物理网卡(虚拟机网卡忽略)的MAC地址?也就是只获得一个MAC地址
1.已经使用NCB、netbios方法实现,但是不能区分物理网卡和虚拟机的网卡。
2.区分物理网卡和虚拟网卡的一个方法是通过网卡名称获得它的注册表信息,二者的PnpInstanceID字段不一样,物理网卡的PnpInstanceID字段都以PCI开头。使用IP_ADAPTER_INFO *IpAdaptersInfo的GetAdaptersInfo()方法将获得主机上所有的网卡.这个方法已经实现,它能区别物理网卡和虚拟网卡,但是不能区别该网卡是否正在使用。
3.我的一个想法是结合NCB和注册表信息,使用NCB服务获得网络中得所有网卡,再通过网卡名称(Adaptername如7B0968E1-848C-43AF-942C-59F4187472D4)查看特定网卡的注册表信息,判断它是不是物理网卡。现在的问题是NCB服务中没有网卡名称(Adaptername)这个信息,只有网卡的内部编号lana_num如0,ADAPTER_STATUS结构中也只有adapter_type,不符合要求
4.使用C#.NET实现的方法我已经知道了,但是我不能使用.NET框架,要使用C++与MFC编程。所以NetworkInterface实现的方法不能用。