2009-10-14 4 views

ответ

3

Поскольку вы упоминаете WMI, я предполагаю, что вы работаете над Windows. Поиск GetVolumeInformation().

+0

это звучит как что-то для лицензионного программного обеспечения, GetVolumeInformation() возвращает последовательный том, который изменяется каждый раз, когда диск отформатирован и является тривиальным изменением в программном обеспечении. Серийный номер производителя был бы более полезным. – hplbsh

1

В Windows вы можете получить информацию процессора с переменной окружения * ПРОЦЕССОР _ **, вы можете разобрать серийный номер тома из об, МАС-адрес от маршрута печати

Если вы хотите, чтобы сделать это кросс-платформенный (и если это для лицензирования программного обеспечения), то платформа с открытым исходным кодом, такая как Linux, все равно поднимает проблему на совершенно новый уровень и требует другого подхода. Однако вы все равно можете получать много информации, анализируя вывод из стандартных инструментов.

Вы действительно должны рассмотреть WMI. В прежние времена BIOS был бы полезен, но все его заменили HAL.

CodeProject всегда стоит поискать в таких случаях.

How To Get Hardware Information

+1

Ссылка - код C#, вопрос отмечен C++. – atoMerz

1

Ниже приведен код, я использую, чтобы получить серийный жесткий диск для игры, так что мошенники постоянно запрещены (и они не могут вернуться в без получения нового диска!):

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:\, это легко исправить.

+0

ВНИМАНИЕ! Вместо серийного номера жесткого диска это решение дает вам серийный номер громкости, который сильно отличается. –

+0

@JustShadow Невозможно получить * фактический * серийный номер жесткого диска в Windows без использования специальных инструментов для каждого производителя. Это извлекает «серийный номер», который Windows дает вам как серийный диск, поэтому этот ответ действителен. – cybermonkey

+0

Это полное решение: https://stackoverflow.com/questions/24049367/how-do-i-get-the-disk-drive-serial-number-in-cc/48741695#48741695 Он обматывает вызовы WMI и дополнительных инструментов не требуется –

 Смежные вопросы

  • Нет связанных вопросов^_^