Я хочу получить такие данные, как размер / емкость, серийный номер, номер модели, секторы головок, производитель и, возможно, данные SMART.
используя С#, как я могу извлечь информацию о жестких дисках, присутствующих на локальной машине
Ответы (4)
Вы можете использовать вызовы 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/en-us/library/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();
}