Comment trouver le disque qui contient une partition donnée en C #?
-
08-07-2019 - |
Question
Est-ce que quelqu'un connaît un moyen de déterminer par programme quel disque physique contient une partition donnée? Manuellement, je peux trouver cette information en utilisant Démarrer - & Gt; Exécuter - & Gt; diskmgmt.msc, où je peux voir que (sur mon ordinateur) les partitions C: et D: se trouvent sur le disque 1, E: & amp; F: sur le disque 0.
Ceci permet d'optimiser certaines opérations de traitement de fichiers en les effectuant en parallèle si les fichiers se trouvent sur des disques physiques différents.
La solution
Vous pouvez obtenir ces informations à l'aide de WMI à partir de l'espace de noms System.Management en interrogeant Win32_DiskDrive , classe.
Voici des informations de base sur WMI dans .NET.
Autres conseils
En plus de la réponse d'Arul, voici un lien qui montre comment obtenir le disque < - > association de partition utilisant WMI à partir d'un script VBS: Tâches WMI: disques et systèmes de fichiers - > voir le dernier exemple de la page.
Modifier: Encore mieux, voici un bon article. sur WMI en utilisant C #, qui décrit également les relations exactes entre les classes WMI nécessaires pour obtenir le lecteur de disque (par exemple, \\\\.\\PHYSICALDRIVE0
) qui contient un disque logique (par exemple, C:
)
voir 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
voir Classe: CIM_BasedOn - partition non énumérée, CIM_DiskPartition -all, mais pas l’étiquette du disque, CIM_StorageExtent - GUID, étiquette, partition (masquer aussi)
Êtes-vous sûr que la partition est associée à un seul disque? Il peut s'agir de bandes / d'étendues / etc. sur plusieurs disques physiques.