我目前在我的Windows 7引导营(运行在Macbook Pro上)上使用两种方法来检索MAC地址。我目前正在调查在虚拟机器上运行我的C#编写应用程序的人的一些问题,他们无法通过我的MAC地址身份验证机制进行身份验证。我手头上没有VM构建,所以我选择了最近的选择--我的新兵训练营。
第一种方法基于物理卡连接到PCI接口的事实检索MAC地址。
public static string returnMAC1()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select MACAddress, PNPDeviceID FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL AND PNPDEVICEID IS NOT NULL");
ManagementObjectCollection mObject = searcher.Get();
foreach (ManagementObject obj in mObject)
{
string pnp = obj["PNPDeviceID"].ToString();
if (pnp.Contains("PCI\\"))
{
string mac = obj["MACAddress"].ToString();
mac = mac.Replace(":", string.Empty);
return mac;
}
}
return "Nothing happened...";
}第二个方法是MSDN文档中的一个标准方法:
public static string returnMAC2()
{
string mac = string.Empty;
foreach (System.Net.NetworkInformation.NetworkInterface nic in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up)
{
macAddresses += nic.GetPhysicalAddress().ToString();
break;
}
}
return mac;
}使用这两种方法,我得到了两个完全不同的结果:
下面是在我的两个方法中打印的内容:

当我从Network and Sharing Center -> Wireless Network Connection查看MAC地址时,它与method 2的结果相对应。

我得到了两个完全不同的结果,这与方法#1给我的不是无线网卡MAC,而是实际PCI卡MAC的结果有关吗?这似乎是最简单的解释,但有可能。
发布于 2014-02-11 21:35:05
看来我的假设是正确的。
我带了一个LAN端口(不知道为什么不早些时候这么做)并将它插入到MAC中。再次运行脚本,这次检查Local Area Connection的地址,这次它显示method 1的地址。
汲取的经验教训:
https://stackoverflow.com/questions/21713371
复制相似问题