2011-07-04 49 views
4

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

+2

无法访问驱动器不会让您远远超过它的照片。 –

+1

@HansPassant我认为他的意思是'C:drive'和'D:drive'的驱动器,而不是'硬盘驱动器'。 – robertc

+0

@CommunistPancake请提出问题,改进并粘贴一些代码。 – kenorb

回答

7

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

嗨我怎样才能从这个类获得分区标题(C,D,E,...)? – user3290286

0

您可以使用以下方法获取装入磁盘分区的卷或DriveLetter。

  1. Win32_LogicalDiskToPartition
  2. Win32_DiskDrive

Win32_DiskDrive类,你可以通过查询产权IndexName属性提取DriveNumber得到了DriveNumber。然后从Win32_LogicalDiskToPartition查询AntecedentDependent。在Antecedent值中,您将获得磁盘号和其尝试映射卷的分区,然后从Dependent属性中提取DriveLetter,如“C:”,“D:”等。所以通过使用这个逻辑,你可以将LogicalDrives安装在特定的HardDisk上。 我在我的组件中使用这个逻辑来为我的系统上的特定硬盘驱动器获取LogicalDrive名称(“C:”,“D:”等)。

相关问题