Como encontrar o disco que contém uma determinada partição em C#?
-
08-07-2019 - |
Pergunta
Alguém sabe uma maneira de descobrir programaticamente qual disco físico contém uma determinada partição? Manualmente, posso encontrar essas informações usando Start-> run-> diskmgmt.msc, onde posso ver que (no meu computador) participa C: e D: estão no disco 1, e: & f: no disco 0.
Isso é para otimizar algumas operações de trituração de arquivos, fazendo -as em paralelo se os arquivos estiverem em diferentes discos físicos.
Solução
Você pode obter essas informações usando o WMI do System.Management Namespace, prendendo Win32_diskdrive classe.
Aqui está Informações básicas sobre o WMI na .NET.
Outras dicas
Além da resposta de Arul, aqui está um link que mostra como Geth the Disk <-> Partition Association usando o WMI de um script VBS: Tarefas da WMI: discos e sistemas de arquivos-> Veja o último exemplo na página.
Editar: ainda melhor, Aqui está um bom artigo no WMI usando C#, que também descreve também as relações exatas entre as classes WMI necessárias para obter a unidade de disco (por exemplo, \\\\.\\PHYSICALDRIVE0
) que contém um disco lógico (por exemplo C:
)
Veja HKEY_LOCAL_MACHINE System MountEdDevices
wmic path CIM_BasedOn get * > wmic-path-CIM_BasedOn-get.txt
wmic path CIM_DiskPartition get * > wmic-path-CIM_DiskPartition-get.txt
wmic path CIM_StorageExtent get * > wmic-path-CIM_StorageExtent-get.txt
Consulte Classe: CIM_BASEDON - Partição Hiden Non Enumerate, CIM_DISKPartition -Al, mas não veja o rótulo do disco, CIM_StorageExtent - GUID, LABEL, partição (oculto também)
Tem certeza de que a partição está associada a apenas um disco? Pode ser listrado/vasculado/etc em vários discos físicos.