列出磁盘上的所有分区

本文关键字:分区 磁盘 | 更新日期: 2023-09-27 18:01:12

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

列出磁盘上的所有分区

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

您可以使用以下方法来获取磁盘分区所在的Volume或DriveLetter。

  1. Win32_LogicalDiskToPartition
  2. Win32_DiskDrive

Win32_DiskDrive类中,可以通过查询属性Index或从Name属性中提取DriveNumber来获得DriveNumber。然后从Win32_LogicalDiskToPartition查询AntecedentDependent。在Antecedent值中,您将获得磁盘编号和它试图映射卷的分区,然后从Dependent属性中提取DriveLetter,如"C:"、"D:"等。因此,通过使用此逻辑,您可以将LogicalDrives安装在特定的HardDisk上。我在组件中使用这个逻辑来获取系统上特定硬盘驱动器的LogicalDrive名称("C:"、"D:"等(。