Win32_LogicalDisk falla para disquetes
Pregunta
Usando una idea de la idea de Bob King, escribí el siguiente método.
Funciona muy bien en CD, unidades extraíbles, unidades normales.
Sin embargo, para un disquete, siempre devuelve " No disponible " ;. ¿Alguna idea?
public static void TestFloppy( char driveLetter ) {
using( var searcher = new ManagementObjectSearcher( @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'" ) )
using( var logicalDisks = searcher.Get() ) {
foreach( ManagementObject logicalDisk in logicalDisks ) {
var fs = logicalDisk[ "FreeSpace" ];
Console.WriteLine( "FreeSpace = " + ( fs ?? "Not Available" ) );
logicalDisk.Dispose();
}
}
}
Solución
Lamento no tener una mejor respuesta, pero solía hacer lo mismo (usar ManagementObjectSearcher) y encontré que cada vez que el código ejecutaba la unidad de disquete hacía algún tipo de secuencia de búsqueda / inicio.
Entonces, en cambio, cambié a lo siguiente e interate:
ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null);
comp.Get();
objs = comp.GetInstances();
Quiero decir que este es un error conocido en WMI pero desafortunadamente los comentarios del código no dejan ninguna pista :(
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow