获取计算机的MAC地址

我想使用c#访问计算机的mac地址。 我使用以下代码访问mac地址,但此代码中存在一些问题。

代码1

foreach( NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces() ) { if( nic.OperationalStatus == OperationalStatus.Up ) { Console.WriteLine( nic.GetPhysicalAddress().ToString() ); checkMAC = nic.GetPhysicalAddress().ToString(); break; } } 

代码2

  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); string MACAddress = String.Empty; foreach (ManagementObject mo in moc) { if (MACAddress == String.Empty) // only return MAC Address from first card { if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString(); } mo.Dispose(); } MACAddress = MACAddress.Replace(":", ""); 

在第一个代码中,当我们断开网络连接时,它将返回空的mac地址。 当网络适配器连接ID断开时,第二个代码返回mac地址但是当我们断开网络连接或删除计算机的IP地址时,它将返回空的mac地址。

如何在禁用网络连接时获取mac地址,没有分配给PC的IP地址或网络连接断开?

当您禁用网络适配器时,根本无法访问它 – 就好像它没有安装一样,这就是您没有看到MAC地址的原因。

编辑:说明:

MAC地址属于网络适配器。 如果您有3个适配器,则有3个MAC地址。 如果没有适配器,则没有MAC地址。