[英]How to get serial number for Hard Drive
如何使用WMI和asm代碼以外的C ++程序獲取處理器(CPU),SCSI,顯示和IDE的唯一編號(序列號/ ID)?
由於您提到WMI,因此我假設您正在Windows上工作。 查找GetVolumeInformation() 。
在Windows上,您可以從環境變量* PROCESSOR _ **獲取CPU信息,可以從vol解析卷序列號,從路由打印解析MAC地址。
如果您想使其跨平台(並且這是為了軟件許可),那么像Linux這樣的開源平台無論如何都會將問題提升到一個全新的水平,並且需要使用不同的方法。 但是,您仍然可以通過分析標准工具的輸出來獲取很多信息。
您確實應該考慮WMI。 在過去,BIOS會有所幫助,但全部由HAL取代。
在這種情況下,CodeProject 始終值得搜索。
以下是我用來檢索游戲硬盤序列的代碼,以便永久禁止作弊者(如果沒有新的驅動器,他們就不能回來!):
string GetMachineID()
{
// LPCTSTR szHD = "C:\\"; // ERROR
string ss;
ss = "Err_StringIsNull";
UCHAR szFileSys[255],
szVolNameBuff[255];
DWORD dwSerial;
DWORD dwMFL;
DWORD dwSysFlags;
int error = 0;
bool success = GetVolumeInformation(LPCTSTR("C:\\"), (LPTSTR)szVolNameBuff,
255, &dwSerial,
&dwMFL, &dwSysFlags,
(LPTSTR)szFileSys,
255);
if (!success) {
ss = "Err_Not_Elevated";
}
std::stringstream errorStream;
errorStream << dwSerial;
return string(errorStream.str().c_str());
}
雖然如果安裝在比其它驅動器的Windows存在的潛在問題,於是C:\\
,這是一個容易解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.