Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Определение серийного номера HDD (Serial Number)

#c_sharp


Всем привет, пытаюсь программно определить серийный номер HDD. В результате получил
2 разных значения:

с использованием WMI из командной строки (команда wmic diskdrive get serialnumber)
с использованием WMI через ManagementObject (экземпляр WMI) в проекте C#

.
ManagementObjectSearcher searcher = new 
    ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

foreach (ManagementObject hdd in searcher.Get())
    Console.WriteLine(hdd["SerialNumber"]);

В первом случае возвращается значение 9WJ16TH7, во втором - 2020202020202020202020205739314a54363748
Подскажите, пожалуйста, в чем проблема и как исправить ошибку в коде C#.    


Ответы

Ответ 1



Попробуй вместо Win32_PhysicalMedia использовать Win32_DiskDrive (в Vista и далее первый заменен вторым). Протестируй на разных операционных системах. Второй вариант: строка которую ты получаешь в приложении - это последовательность ASCII кодов символов. То есть теперь твоя задача правильно переконвертировать ее в удобоваримый вид.

Ответ 2



Вариант с командой wmic DISKDRIVE GET SerialNumber может и не работать: там может просто не быть свойства SerialNumber. Это проверяется командой: wmic DISKDRIVE GET /? Вместо нее можно также извлечь данные из Win32_PhysicalMedia wmic PATH Win32_PhysicalMedia GET SerialNumber

Комментариев нет:

Отправить комментарий