2010-06-30 30 views
10

Có cách nào tôi có thể lấy địa chỉ MAC khi Network Adapter bị vô hiệu hóa trong .net?Nhận địa chỉ MAC khi bộ điều hợp mạng bị tắt?

Cảm ơn trước,

+1

bạn có thể đăng mã bạn sử dụng khi bộ điều hợp được bật hay không, sau đó đề cập đến (các) cuộc gọi nào không hoạt động khi bộ điều hợp bị tắt? –

Trả lời

7

Không thể lấy địa chỉ MAC của bộ điều hợp bị tắt: điều này là do nhận địa chỉ MAC yêu cầu trình điều khiển và trình điều khiển cho bộ điều hợp bị vô hiệu hóa không được tải (source).

Tuy nhiên, bạn có thể nhận địa chỉ MAC của bộ điều hợp không được kết nối hiện tại.

Tuyến WMI không tốt ở đây, vì nó hiển thị địa chỉ MAC là không cho bộ điều hợp không được kết nối. Tin vui là tuyến đường NetworkInterface.GetAllNetworkInterfaces() hoạt động tốt:

// using System.Net.NetworkInformation; 
var nics = NetworkInterface.GetAllNetworkInterfaces(); 

// pick your NIC! 
var selectedNic = nics.First(); 

var macAddress = selectedNic.GetPhysicalAddress().ToString(); 
1

Bạn có thể sử dụng WMI:

public static string GetMACAddress() 
    { 
     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 
      { 
       MACAddress= mo["MacAddress"].ToString() ; 
      } 
      mo.Dispose(); 
     } 

     return MACAddress; 
    } 
+4

Tính năng này không hoạt động với Windows 7 khi NIC bị tắt. Có lý do gì không ??? –

+1

Nó cũng không hoạt động trên Windows XP. Tôi nghĩ câu trả lời này đã được đánh dấu là câu trả lời quá nhanh. – bitbonk

+0

Không hoạt động nếu bộ điều hợp mạng bị tắt. – tmighty

Các vấn đề liên quan