Come trovare il disco che contiene una determinata partizione in C #?
-
08-07-2019 - |
Domanda
Qualcuno conosce un modo per scoprire programmaticamente quale disco fisico contiene una determinata partizione? Manualmente, posso trovare queste informazioni usando Start - & Gt; Esegui - & Gt; diskmgmt.msc, dove posso vedere che (sul mio computer) le partizioni C: e D: sono sul disco 1, E: & amp; F: sul disco 0.
Questo serve per ottimizzare alcune operazioni di scricchiolio dei file eseguendole in parallelo se i file si trovano su dischi fisici diversi.
Soluzione
È possibile ottenere queste informazioni utilizzando WMI dallo spazio dei nomi System.Management eseguendo una query Win32_DiskDrive classe.
Ecco informazioni di base su WMI in NET.
Altri suggerimenti
Oltre alla risposta di Arul, ecco un link che mostra come ottenere il disco < - > associazione di partizione usando WMI da uno script VBS: Attività WMI: dischi e file system - gt &; vedi l'ultimo esempio sulla pagina.
Modifica: ancora meglio, ecco un buon articolo su WMI utilizzando C #, che descrive semplicemente le relazioni esatte tra le classi WMI necessarie per ottenere l'unità disco (ad esempio \\\\.\\PHYSICALDRIVE0
) che contiene un disco logico (ad esempio C:
)
vedi 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
vedi Classe: CIM_BasedOn - partizione hiden non enumerata, CIM_DiskPartition -all, ma non vedi l'etichetta del disco, CIM_StorageExtent - GUID, etichetta, partizione (nascondi anche)
Sei sicuro che la partizione sia associata a un solo disco? Potrebbe essere a strisce / spanning / etc su più dischi fisici.