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