Я писал код для перечисления всех разделов диска и обнаружил проблему. Свойство Win32_DiskDrive
Partitions
WMI показывает мне, что на одном тестовом диске 5 разделов, но я могу перечислить только четыре из них (последние два раздела отображаются, поскольку они были только одним). Последние два раздела являются основными, но один - это раздел подкачки, а другой - раздел Linux.
Список всех разделов диска на C #
Ответы (2)
Я думаю, это должно помочь:
/// <summary>
/// Loads all Drives of the Computer and returns a List.
/// </summary>
private List<DriveInfo> LoadDrives()
{
var drives = new List<DriveInfo>();
foreach (DriveInfo drive in DriveInfo.GetDrives())
{
if (drive.IsReady)
{
drives.Add(drive);
}
}
return drives;
}
person
Eru Iluvatar
schedule
18.06.2013
Если вы действительно этого хотите, вы можете заменить свой
drives.Add
на yield return
и вернуть IEnumerable
. Просто как предложение.
- person gunr2171; 18.06.2013
Я пробовал, но этот код возвращает только 3 диска, а управление дисками Windows показывает 5 ...
- person Gabi Cea; 18.06.2013
Да, это правда и, может быть, более элегантно :)
- person Eru Iluvatar; 18.06.2013
Думаю, причина может быть условной! Вы можете отладить функцию и увидеть, почему возвращаются только три диска!
- person Eru Iluvatar; 18.06.2013
DriveInfo.GetDrives () возвращает только те диски, которые Windows показывает в окне «Мой компьютер»
- person Gabi Cea; 18.06.2013
Может быть, для двух других дисков установлены какие-то атрибуты? Мои окна показывает мой еще один диск на разделах - окно. Итак, может быть, два диска не имеют буквенного обозначения?
- person Eru Iluvatar; 18.06.2013
Да, у этих двух дисков нет буквы диска, потому что они являются разделами Linux и Swap, и Windows не может их видеть.
- person Gabi Cea; 18.06.2013
Вы также можете попробовать это решение, похоже, оно может решить вашу проблему, но я его не тестировал! stackoverflow.com/questions / 6575727 /
- person Eru Iluvatar; 19.06.2013
Я уже знал эту ссылку, и я попробовал это решение, но оно показывает мне только 4 раздела, последний показанный раздел имеет тот же размер, что и последние два реальных раздела ...
- person Gabi Cea; 19.06.2013
Я считаю, что вам нужно _ 1_.
Для каждого string
, используемого вами GetLogicalDrives
, вы можете создать System.IO.DriveInfo
, который предоставит всевозможную информацию о логическом диске.
DriveInfo.GetDrives()
может быть ярлыком для двух шагов. приведено выше. Я не совсем уверен в этом, да и документация не очень ясна.
person
Timothy Shields
schedule
18.06.2013
Попробую с
string[] System.IO.Directory.GetLogicalDrives()
и подскажу свой опыт
- person Gabi Cea; 18.06.2013
Этот код возвращает то же самое, только 3 диска, те же диски, которые Windows показывает в окне «Мой компьютер» ...
- person Gabi Cea; 18.06.2013
code
var searchcher = new ManagementObjectSearcher (SELECT * FROM Win32_DiskPartition); ‹br/› foreach (var queryObj в searchcher.Get ()) ‹br/› {‹br/› Console.WriteLine (---- -------------------------------); ‹br/› Console.WriteLine (экземпляр Win32_DiskPartition); ‹br/› Консоль .WriteLine (Имя: {0}, (строка) queryObj [Имя]); ‹br/› Console.WriteLine (Индекс: {0}, (uint) queryObj [Индекс]); ‹br/› Console.WriteLine (DeviceID : {0}, (строка) queryObj [DeviceID]); ‹br/›} ` - person Gabi Cea   schedule 18.06.2013