2011-07-04 77 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:」等)。

相關問題