usando c # ¿cómo puedo extraer información sobre los discos duros presentes en la máquina local?
-
04-07-2019 - |
Pregunta
Estoy buscando obtener datos como Tamaño / Capacidad, Número de serie, Modelo No, Sectores de cabezales, Fabricante y posiblemente datos SMART.
Solución
Puede usar llamadas WMI para acceder a la información sobre los discos duros.
// Requiere el uso de System.Management; &erio; Referencia de 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");
Otros consejos
Debe usar el 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");
}
Para obtener detalles sobre los miembros de la clase Win32_DiskDrive, echa un vistazo:
http://msdn.microsoft.com/ en-us / library / aa394132 (VS.85) .aspx
La forma más fácil es usar WMI para obtener la información requerida. Mire la documentación para Win32___DiskDrive en MSDN, que contiene una variedad de propiedades de unidad estándar. También puede intentar usar la clase de MSStorageDriver_ATAPISmartData WMI, que no puedo encontrar ningún documento por el momento, pero debería tener todos los datos SMART que está buscando. Aquí hay un código de ejemplo básico para enumerar todas las unidades y obtener sus propiedades:
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();
}