这种方法使用COM API创建一个GUID(全局唯一标识符)并从那里继承MAC地址。GUID通常用来标识COM组件以及系统中的其他对象。它们是由MAC地址(结合其他东西)计算得来的,表面上MAC地址就包含在其中。我说表面上是因为事实上并没有包含。 我提供这种方法更多的是为了作为反面教材。您也许用这种方法能够得到MAC地址,但有时候您只会得到随机的十六进制数值。 下面的例子十分简单,无需多讲。我们使用CoCreateGuid创建GUID,并将最后六个字节放入字符串中。它们可能是MAC地址,但并不是必然的。
uuid.cpp #include <windows.h> #include <iostream> #include <conio.h>
using namespace std;
int main() { cout << "MAC address is: ";
// 向COM要求一个UUID。如果机器中有以太网卡, // UUID最后的六个字节(Data4的2-7字节)应该是本地以太网卡的MAC地址。 GUID uuid; CoCreateGuid(&uuid); // Spit the address out char mac_addr[18]; sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X", uuid.Data4[2],uuid.Data4[3],uuid.Data4[4], uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]); cout << mac_addr << endl; getch(); return 0; }

|