【发布时间】:2023-03-14 02:12:01
【问题描述】:
我目前在我的 Windows 7 Bootcamp(在 Macbook Pro 上运行)上使用两种方法来检索 MAC 地址。我目前正在调查人们在虚拟机上运行我的 C# 编写的应用程序的一些问题,他们无法通过我的 MAC 地址身份验证机制进行身份验证。我手头没有虚拟机构建,所以我选择了最接近的替代方案 - 我的新手训练营。
第一种方法根据物理卡连接到 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 的事实有关?这似乎是最简单的解释,但却是可能的。
【问题讨论】:
标签: c# mac-address bootcamp