List All Partitions On Disk [closed]

你。 提交于 2019-11-26 17:09:39

问题


I'm making a utility in C# for a filesystem that isn't supported by windows, which means that I can't just access the drive. I need a way to list all partitions on the hard disk and writing/formatting them.


回答1:


To list disk partitions you can use WMI.

var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskPartition");

foreach (var queryObj in searcher.Get())
{
    Console.WriteLine("-----------------------------------");
    Console.WriteLine("Win32_DiskPartition instance");
    Console.WriteLine("Name:{0}", (string)queryObj["Name"]);
    Console.WriteLine("Index:{0}", (uint)queryObj["Index"]);
    Console.WriteLine("DiskIndex:{0}", (uint)queryObj["DiskIndex"]);
    Console.WriteLine("BootPartition:{0}", (bool)queryObj["BootPartition"]);
}



回答2:


You can use the following approach to get the Volume or DriveLetter on which the partition of disk is mounted.

  1. Win32_LogicalDiskToPartition
  2. Win32_DiskDrive

From the Win32_DiskDrive class you can get the DriveNumber by querying property Index or extracting the DriveNumber from Name attribute. Then query Antecedent and Dependent from Win32_LogicalDiskToPartition. In the Antecedent value you will get the Disk Number and the partition it is trying to map the Volume, after that extract the DriveLetter such as "C:", "D:" etc from the Dependent property. So by using this logic you can get the LogicalDrives mounted on particular HardDisk. I'm using this logic in my component to get the LogicalDrive names ("C:", "D:" etc) for particular hard drive on my system.



来源:https://stackoverflow.com/questions/6575727/list-all-partitions-on-disk

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!