Получение MAC -адреса машины - хорошее решение?

StackOverflow https://stackoverflow.com/questions/2069855

  •  20-09-2019
  •  | 
  •  

Вопрос

Я слышал, что с моей нынешней библиотекой 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 -адресом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top