我在C#中为Windows不支持的文件系统创建一个实用程序,这意味着我不能只访问该驱动器。我需要一种方法来列出硬盘上的所有分区并写入/格式化它们。
答案 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。
从Win32_DiskDrive
课程中,您可以通过查询属性DriveNumber
或从Index
属性中提取DriveNumber
来获取Name
。然后从Antecedent
查询Dependent
和Win32_LogicalDiskToPartition
。在Antecedent
值中,您将获得磁盘编号及其尝试映射卷的分区,然后提取DriveLetter
,例如" C:",&#34 ; d:"来自Dependent
属性的等等。因此,通过使用此逻辑,您可以在特定LogicalDrives
上安装HardDisk
。
我在我的组件中使用此逻辑为我的特定硬盘驱动器获取LogicalDrive
名称(" C:"," D:"等)系统