我想編寫一個程序,將確定一臺機器(用於許可目的),我因子評分有關獲取以下信息,並編制這一數據的XML文件:獲取機器性能
- MAC地址。 CPU數據(串行,製造等)
- 母板識別。 (串行,製造等)
有人可以向我推薦一個提供這種信息的庫 - 我用C++編寫我的程序,並有麻煩找到這樣的lib。
我應該在註冊表中挖掘這些信息嗎?
非常感謝, 奧弗
我想編寫一個程序,將確定一臺機器(用於許可目的),我因子評分有關獲取以下信息,並編制這一數據的XML文件:獲取機器性能
有人可以向我推薦一個提供這種信息的庫 - 我用C++編寫我的程序,並有麻煩找到這樣的lib。
我應該在註冊表中挖掘這些信息嗎?
非常感謝, 奧弗
使用WMI並獲得主板的序列號應該是足夠的(其他選項不太安全,因爲一臺舊電腦可能沒有網絡適配器和/或CPU可以改變比主板更可能)。
GetAdaptersInfo()會給你MAC地址。這裏有一個如何用於此目的的例子。
/** *************************************
return string containing first MAC address on computer
NOTE: requires adding Iphlpapi.lib to project
*/
string GetMac()
{
char data[4096];
ZeroMemory(data, 4096);
unsigned long len = 4000;
PIP_ADAPTER_INFO pinfo = (PIP_ADAPTER_INFO) data;
char sbuf[20];
string sret;
DWORD ret = GetAdaptersInfo(pinfo, &len);
if(ret != ERROR_SUCCESS)
return string("**ERROR**");
for(int k = 0; k < 5; k++) {
sprintf(sbuf,"%02X-",pinfo->Address[k]);
sret += sbuf;
}
sprintf(sbuf,"%02X",pinfo->Address[5]);
sret += sbuf;
return(sret);
}
對於一個完整的系統做這樣的事情的一個例子,看看Manuele Sicuteri的CodeProject上article。
不要使用WMI(慢,沒有安裝NT) 使用標準的Win32 API
見新聞://comp.os.ms-windows.programmer.win32 其中所有這一切都爲回答數十年(C/++代碼)
值得注意的是,可能有多個MAC地址,並且它們可能會頻繁更改(例如,筆記本內置的WiFi卡,通過USB內部連接,可能完全消失使用); – atzz 2008-11-30 17:20:51
..並且WMI可以在目標機器上禁用,並且不存在於舊系統(Win2K,Win9x)上。但是,就兼容性而言,WMI仍然是最好的選擇。 – atzz 2008-11-30 17:23:29