Mapear um DiskIndex para um rótulo de volume

tualmente, consigo obter todos os discos e seus rótulos em c # usando o DriveInfo.GetDrives (). Então, sou capaz de obter o Índice de Disco / Índice da Partição por essa metodologia.

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"]);
}

O problema disso é que o DiskIndex, Name e Index são basicamente apenas números e não o rótulo do volume, ou seja, C: \, D: \, etc ...

Então, como posso criar o rótulo de volume que é oName Proprty no DriveInfo para o DiskIndex? Usar essa metodologia ou uma maneira melhor funcionará.

(Esta é uma sequência de:Diga se um Drive é uma partição ou um HDD separado)

EDITAR Encontrei para a consulta de gerenciamento do Win32_LogicalDisk e depois o Win32_LogicalDiskToPartition. o LogicalDisk possui o volume e o LogicalDisktoParition fornece o mapeamento. No entanto, não consigo descobrir como obter o mapa. Tentei procurar um JOIN e selecionar os valores, mas não consegui encontrar nada sobre como fazer isso sem um loop extenso no código c #.

questionAnswers(4)

yourAnswerToTheQuestion