簡體   English   中英

如何獲取硬盤的序列號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM