#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
Комментариев нет:
Отправить комментарий