列出磁盘上的所有分区

时间:2011-07-04 20:17:30

标签: c# .net disk-partitioning

我在C#中为Windows不支持的文件系统创建一个实用程序,这意味着我不能只访问该驱动器。我需要一种方法来列出硬盘上的所有分区并写入/格式化它们。

2 个答案:

答案 0 :(得分:8)

要列出磁盘分区,您可以使用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"]);
}

答案 1 :(得分:0)

您可以使用以下方法获取已安装磁盘分区的Volume或DriveLetter。

  1. Win32_LogicalDiskToPartition
  2. Win32_DiskDrive
  3. Win32_DiskDrive课程中,您可以通过查询属性DriveNumber或从Index属性中提取DriveNumber来获取Name。然后从Antecedent查询DependentWin32_LogicalDiskToPartition。在Antecedent值中,您将获得磁盘编号及其尝试映射卷的分区,然后提取DriveLetter,例如" C:",&#34 ; d:"来自Dependent属性的等等。因此,通过使用此逻辑,您可以在特定LogicalDrives上安装HardDisk。 我在我的组件中使用此逻辑为我的特定硬盘驱动器获取LogicalDrive名称(" C:"," D:"等)系统