2009-05-05 32 views
14

Tôi đang chơi xung quanh với lấy địa chỉ MAC từ NIC - có rất nhiều cách khác nhau để có được nó, bài viết này bao gồm phổ biến nhất:Làm thế nào để có được địa chỉ MAC phần cứng trên Windows

http://www.codeguru.com/Cpp/I-N/network/networkinformation/article.php/c5451

tôi hiện đang sử dụng phương pháp GetAdaptersInfo, mà dường như các đạn nhất, nhưng nếu địa chỉ MAC đã được thiết lập thông qua đăng ký:

http://www.mydigitallife.info/2008/06/30/how-to-change-or-spoof-mac-address-in-windows-xp-vista-server-20032008-mac-os-x-unix-and-linux/

Sau đó nó báo cáo các địa chỉ MAC mà nó đã được c bị treo cổ. Cách duy nhất tôi đã tìm thấy để thực sự nhận được MAC thực sự là để loại bỏ các mục đăng ký, khởi động lại NIC, nhận được MAC thông qua GetAdaptersInfo, sau đó thay thế các mục đăng ký, và khởi động lại NIC. Trong khi nó được thực hiện công việc, nó hầu như không minh bạch cho người dùng.

Có phương pháp nào khác mà bất kỳ ai quen thuộc, điều đó sẽ trả về MAC phần cứng bất kể đăng ký được đặt là gì? Lý tưởng nhất là tôi muốn một giải pháp hoạt động trên XP.

Cảm ơn trước!

Trả lời

2

Tôi đoán là trong bài viết CodeGuru được liên kết, giải pháp Miniport có khả năng khắc phục được vấn đề bạn mô tả, mặc dù rất khó thực hiện. Lý do tôi nghĩ rằng đây là tôi đã sử dụng giải pháp GetAdaptersInfo trong quá khứ và nhận thấy rằng địa chỉ MAC sẽ thay đổi mà không cần khởi động lại khi một bộ điều hợp được thêm vào, ví dụ: bộ điều hợp Bluetooth cung cấp dịch vụ PAN.

Có lẽ thay vì khởi động lại sau khi thay đổi cài đặt đăng ký, bạn có thể thử dừng và khởi động lại các dịch vụ mạng có liên quan. Bạn có thể dễ dàng kiểm tra điều này theo cách thủ công trước khi tìm kiếm giải pháp có lập trình.

(n.b. ở trên là tất cả các công việc đoán. Nếu bạn thử nó và nó hoạt động, có lẽ thêm một bài cho những người cố gắng làm tương tự trong tương lai).

+0

Vì vậy, có vẻ như giải pháp Miniport hoạt động, nhưng có khả năng cao không được hỗ trợ về sau. Tôi tìm thấy liên kết này từ các chuyên gia NDIS tại PCUSA: http://www.pcausa.com/Utilities/macaddr2.htm Nếu bạn sửa đổi ví dụ của họ thành truy vấn OID_802_3_PERMANENT_ADDRESS thay vì OID_802_3_CURRENT_ADDRESS, nó sẽ trả về địa chỉ phần cứng. – Mark

+0

@Mark - một số khi trong 8 năm qua, liên kết đó đã biến mất. :( –

0

Phân tích đầu ra của ipconfig /all

+0

ipconfig/all (ít nhất là trên Vista) chỉ hiển thị địa chỉ MAC từ sổ đăng ký. – Mark

0

Bạn có thể sử dụng WMI để liệt kê các trường hợp Win32_NetworkAdapter và nhìn vào tài sản MACAddress. Vấn đề chính với kỹ thuật này là tìm trường hợp bộ điều hợp thích hợp nếu bạn có nhiều bộ điều hợp hoạt động được cài đặt, ví dụ: trên một máy tính xách tay cũng có kết nối không dây.

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