سؤال

لقد سمعت أنه غير ممكن مع مكتبتي الحالية لـ WinPcap.

هل هذا صحيح حقًا؟ أرى الكثير من الأمثلة على الشبكة ولكن بعد ذلك تعليقات قائلة "هذا لا يعمل".

ما هي أفضل طريقة للحصول على عنوان MAC للجهاز المحلي؟

هل كانت مفيدة؟

المحلول

تتمثل إحدى الطرق الشائعة في استخدام أجزاء من UUID ، ولكن هذا لا يمكن الاعتماد عليه تمامًا. على سبيل المثال ، ستعيد قيمة حتى على جهاز لا يحتوي على محول شبكة.

لحسن الحظ ، هناك طريقة تعمل بشكل موثوق على أي إصدار حديث معقول من Windows. تقول MSDN إنها تعود فقط إلى Windows 2000 ، ولكن إذا كانت الذاكرة تعمل ، فإنها تعمل أيضًا على NT 4 ، بدءًا من SP 5 ، في حالة ما لا يزال هناك أي شخص يستخدم NT 4.

#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>

int main() {         
    IP_ADAPTER_INFO *info = NULL, *pos;
    DWORD size = 0;

    GetAdaptersInfo(info, &size);

    info = (IP_ADAPTER_INFO *)malloc(size);

    GetAdaptersInfo(info, &size);

    for (pos=info; pos!=NULL; pos=pos->Next) {
        printf("\n%s\n\t", pos->Description);
        printf("%2.2x", pos->Address[0]);
        for (int i=1; i<pos->AddressLength; i++)
            printf(":%2.2x", pos->Address[i]);
    }

    free(info);
    return 0;
}

أرجوك سامح رمز C القديم ...

نصائح أخرى

لا يوجد شيء مثل عنوان "MAC" إذا كان لدى الكمبيوتر> 1 NIC. يمكنك الاستعلام عن هذه المعلومات باستخدام WMI ، http://techsupt.winbatch.com/ts/t000001002f19.html لمزيد من التفاصيل

iphelper's getadaptersaddresses ()
http://msdn.microsoft.com/en-us/library/aa365915٪28vs.85٪29.aspx
أستخدم بنجاح على Wince للحصول على OperStatus ، يجب أن تعمل مع Mac address أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top