Как найти диск, который содержит данный раздел в C #? - PullRequest
1 голос
/ 18 ноября 2008

Кто-нибудь знает способ программно выяснить, какой физический диск содержит данный раздел? Вручную я могу найти эту информацию, используя Start-> Run-> diskmgmt.msc, где я вижу, что (на моем компьютере) разделы C: и D: находятся на диске 1, E: & F: на диске 0.

Это для оптимизации некоторых операций сжатия файлов, выполняя их параллельно, если файлы находятся на разных физических дисках.

Ответы [ 4 ]

3 голосов
/ 19 ноября 2008

Вы можете получить эту информацию с помощью WMI из пространства имен System.Management, запросив Win32_DiskDrive class.

Вот базовая информация о WMI в .NET.

1 голос
/ 01 января 2013

см. HKEY_LOCAL_MACHINE \ SYSTEM \ MountingDevices

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

см. Класс: CIM_BasedOn - не перечислить скрытый раздел, CIM_DiskPartition - все, но не видеть метку диска, CIM_StorageExtent - GUID, метка, раздел (скрыть тоже)

1 голос
/ 19 ноября 2008

В дополнение к ответу Арула, вот ссылка, которая показывает, как получить ассоциацию раздела <-> диска с помощью WMI из сценария VBS: Задачи WMI: Диски и файловые системы -> см. последний пример на странице.

Редактировать: еще лучше, вот хорошая статья о WMI с использованием C #, в которой также описываются точные отношения между классами WMI, необходимыми для получения диска (например, \\\\.\\PHYSICALDRIVE0), который содержит логический диск (например, C:)

0 голосов
/ 19 ноября 2008

Вы уверены, что раздел связан только с одним диском? Это может быть чередование / связывание / и т.д. на нескольких физических дисках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...