Tôi đang cố gắng (nhiều hay ít) xác định duy nhất một hệ thống cho mục đích cấp phép. Tôi đã chọn địa chỉ MAC của bộ điều hợp mạng trên máy tính cho nhiệm vụ này, vì tôi có thể chắc chắn rằng mọi máy tính chạy phần mềm này thực sự có một phần mềm và điều này tránh tái kích hoạt khi thay đổi, ví dụ: đĩa cứng.Làm cách nào để nhận được địa chỉ MAC của bộ điều hợp mạng trên máy tính một cách đáng tin cậy?
Tôi gặp sự cố khi xác định đáng tin cậy bộ điều hợp mạng tích hợp.
Sử dụng "Win32_NetworkAdapterConfiguration" ManagementClass, tôi có thể nhận được rất nhiều địa chỉ MAC, bao gồm địa chỉ tôi thích, nhưng tôi không tìm thấy cách phân biệt một onboard từ bộ điều hợp ảo được cài đặt bởi Windows hoặc Virus Scanners. Danh sách này dường như được đặt hàng, mặc dù. Địa chỉ MAC mà tôi quan tâm là (trên máy của tôi) được liệt kê trước các bộ điều hợp mạng (thực) khác. (Danh sách được sắp xếp theo chỉ mục giao diện.)
Sử dụng NetworkInterface.GetAllNetworkInterfaces()
, tôi nghĩ rằng tôi có thể xác định bộ điều hợp mạng thực bằng cách lọc trên .NetworkInterfaceType == NetworkInterfaceType.Ethernet
, nhưng danh sách này dường như không có thứ tự (thẻ mạng được thêm xuất hiện trước bảng trên).
Lần đầu tiên sử dụng phương pháp thứ hai để nhận danh sách thẻ mạng thực và sau đó sắp xếp chúng theo thứ tự xuất hiện trong danh sách đầu tiên là cách xác định địa chỉ MAC mà tôi đang tìm kiếm? Chỉ số giao diện trong danh sách đầu tiên có thay đổi không? Tôi rất sẵn lòng nghe suy nghĩ của bạn!
Cảm ơn!
P .: Tôi biết rằng địa chỉ MAC có thể thay đổi dễ dàng, nhưng tôi có thể sống với điều đó. Tôi không thể sống với khách hàng không thể sử dụng phần mềm sau khi chỉ cần lắp một thanh WLAN =)
Tại sao không lưu tất cả địa chỉ MAC của ethernet interfacetype? –
@rdkleine: Điều này sẽ phá vỡ kích hoạt nếu một bộ điều hợp mạng khác được thêm vào. – Jens
Bạn có thể so sánh tất cả các bộ điều hợp với tất cả các bộ điều hợp được lưu trong bộ nhớ cache. Một cặp là đủ, phải không? –