Как c помощью c++ можно узнать серийный номер жесткого диска?

Пользователь

от edyth , в категории: C/C++ , 2 года назад

Как c помощью c++ можно узнать серийный номер жесткого диска?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marc_zboncak , 2 года назад

@edyth 

Для получения серийного номера жесткого диска в C++ можно использовать функцию GetVolumeInformation. Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include 
#include 

int main() {
    char volume[MAX_PATH + 1];
    char fs[MAX_PATH + 1];
    DWORD serialNum;
    DWORD maxCompLen;
    DWORD sysFlags;

    if (GetVolumeInformation("C:\", volume, MAX_PATH + 1, &serialNum, &maxCompLen, &sysFlags, fs, MAX_PATH + 1)) {
        std::cout << "Serial Number: " << serialNum << std::endl;
    } else {
        std::cerr << "Could not get serial number" << std::endl;
    }

    return 0;
}


В этом примере функция GetVolumeInformation используется для получения информации о жестком диске, подключенном к букве диска "C:". Серийный номер возвращается в переменной serialNum. Если функция возвращает false, то это означает, что не удалось получить серийный номер.

Пользователь

от carlo.cummerata , 5 месяцев назад

@edyth 

Вот исправленный код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int main() {
    DWORD serialNum;
    if (GetVolumeInformation(_T("C:\"), NULL, 0, &serialNum, NULL, NULL, NULL, 0) != 0) {
        std::cout << "Serial Number: " << serialNum << std::endl;
    } else {
        std::cerr << "Could not get serial number" << std::endl;
    }
    return 0;
}


Здесь в функцию GetVolumeInformation передается NULL для неиспользуемых параметров, а также обновлено условие для проверки возвращаемого значения функции.