с помощью C #, как я могу извлечь информацию о жестких дисках, присутствующих на локальном компьютере
-
04-07-2019 - |
Вопрос
Мне нужны такие данные, как размер / емкость, серийный номер, номер модели, секторы головок, производитель и, возможно, данные SMART.
Решение
Вы можете использовать вызовы WMI для доступа к информации о жестких дисках.
// Требуется использование System.Management; & Амп; Справочник по System.Management.dll
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "bytes");
Другие советы
Вы должны использовать пространство имен System.Management : р>
System.Management.ManagementObjectSearcher ms =
new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in ms.Get())
{
System.Console.Write(mo["Model");
}
Подробнее о членах класса Win32_DiskDrive смотрите:
http://msdn.microsoft.com/ ан-нас / библиотека / aa394132 (VS.85) .aspx
Самый простой способ - использовать WMI для получения необходимой информации. Взгляните на документацию по Win32___DiskDrive в MSDN, который содержит множество стандартных свойств диска. Вы также можете попробовать использовать класс WMI MSStorageDriver_ATAPISmartData, для которого в настоящий момент я не могу найти никаких документов, но в нем должны быть все данные SMART, которые вы ищете. Вот некоторый базовый пример кода для перечисления всех дисков и получения их свойств:
ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drive in drives)
{
foreach (PropertyData property in drive.Properties)
{
Console.WriteLine("Property: {0}, Value: {1}", property.Name, property.Value);
}
Console.WriteLine();
}