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 #.

Respuestas a la pregunta(4)

Su respuesta a la pregunta