2011-07-04 34 views
4

私はWindowsでサポートされていないファイルシステムのためにC#でユーティリティを作っています。つまり、ドライブにアクセスできません。私は、ハードディスク上のすべてのパーティションをリストし、書き込み/フォーマットする方法が必要です。ディスク上のすべてのパーティションを一覧表示する

+2

ドライブにアクセスできないと、写真を撮る以外には何も残っていません。 –

+1

@HansPassant私は彼が 'C:ドライブ'と 'D:ドライブ'のようにドライブを意味していると思いますが、 'ハードディスクドライブ'ではそうではありません。 – 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

次の方法を使用して、ディスクのパーティションがマウントされているVolumeまたはDriveLetterを取得できます。

  1. Win32_LogicalDiskToPartition
  2. Win32_DiskDrive

Win32_DiskDriveクラスからは、プロパティIndexを問い合わせるか、DriveNumberNameから属性を抽出することによりDriveNumberを得ることができます。次に、クエリAntecedentDependentWin32_LogicalDiskToPartitionからクエリします。 Antecedentの値では、ディスク番号とそのボリュームをマップしようとしているパーティションを取得した後、プロパティから "C:"、 "D:"などのDriveLetterを抽出します。したがって、このロジックを使用すると、HardDiskに取り付けられたLogicalDrivesを得ることができます。 私のコンポーネントでこのロジックを使用して、システム上の特定のハードドライブの名前(「C:」、「D:」など)をLogicalDriveに取得しています。

関連する問題