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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top