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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top