我正在使用C#为一个在Windows系统下不被支持的文件系统编写一个实用程序,这意味着我不能直接访问该驱动器。我需要一种方法来列出硬盘上的所有分区并对它们进行写入/格式化。
我正在使用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"]);
}
Win32_DiskDrive
类中,您可以通过查询属性 Index
或从 Name
属性中提取 DriveNumber
来获取 DriveNumber
。然后从 Win32_LogicalDiskToPartition
查询 Antecedent
和 Dependent
。在 Antecedent
值中,您将得到磁盘编号和它正在尝试映射卷的分区,之后从 Dependent
属性中提取诸如 "C:"、"D:" 等的 DriveLetter
。因此,通过使用这个逻辑,您可以获取特定 HardDisk
上挂载的 LogicalDrives
。LogicalDrive
名称("C:"、"D:"等)。