Mapear un DiskIndex a una etiqueta de volumen
Corrent Puedo obtener todas las unidades y sus etiquetas en C # mediante el uso de DriveInfo.GetDrives (). Entonces puedo obtener el índice de disco / índice de la partición por esta metodología.
var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskPartition");
foreach (var queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_DiskPartition instance");
Console.WriteLine("Name:{0}", (string)queryObj["Name"]);
Console.WriteLine("Index:{0}", (uint)queryObj["Index"]);
Console.WriteLine("DiskIndex:{0}", (uint)queryObj["DiskIndex"]);
Console.WriteLine("BootPartition:{0}", (bool)queryObj["BootPartition"]);
}
El problema con esto es que DiskIndex, Name e Index son básicamente números y no la etiqueta de volumen, es decir, C: \, D: \, etc ...
Así que, ¿cómo puedo hacer la etiqueta de volumen que es laName Proprty en DriveInfo al DiskIndex? Usar esta metodología o una mejor manera funcionará.
(Esto es un seguimiento para: Indique si una unidad es una partición o un HDD separado)
EDITAR Encontré para la consulta de gestión de la Win32_LogicalDisk y luego el Win32_LogicalDiskToPartition. LogicalDisk tiene el volumen y LogicalDisktoParition proporciona la asignación. Sin embargo, parece que no puedo entender cómo obtener el mapa. Intenté buscar un JOIN y seleccionar los valores, pero no pude encontrar nada sobre cómo unirse sin un bucle extenso en el código c #.