C#で特定のパーティションを保持するディスクを見つける方法は?
-
08-07-2019 - |
質問
特定のパーティションを保持している物理ディスクをプログラムで見つける方法を知っている人はいますか? 手動で、Start-<!> gt; Run-<!> gt; diskmgmt.mscを使用してこの情報を見つけることができます。ここで、パーティションC:とD:がディスク1、E:にあることがわかります。 <!> amp; F:ディスク0。
これは、ファイルが異なる物理ディスク上にある場合、それらを並行して実行することにより、いくつかのファイルクランチング操作を最適化するためです。
解決
Win32_DiskDrive クラス。
WMIに関する基本情報 .NET。
他のヒント
Arulの答えに加えて、VBSスクリプトからWMIを使用してディスク<!> lt;-<!> gt; partition associationを取得する方法を示すリンクがあります: WMIタスク:ディスクとファイルシステム -<!> gt;ページの最後の例を参照してください。
編集:さらに良い、こちらの記事 C#を使用したWMIで、論理ディスク(たとえば\\\\.\\PHYSICALDRIVE0
)を保持するディスクドライブ(たとえばC:
)を取得するために必要なWMIクラス間の正確な関係を記述することもあります
HKEY_LOCAL_MACHINE \ SYSTEM \ MountedDevicesを参照
wmic path CIM_BasedOn get * > wmic-path-CIM_BasedOn-get.txt
wmic path CIM_DiskPartition get * > wmic-path-CIM_DiskPartition-get.txt
wmic path CIM_StorageExtent get * > wmic-path-CIM_StorageExtent-get.txt
クラス:CIM_BasedOn-非列挙非表示パーティション、CIM_DiskPartition -allを参照してください。ただし、ディスクラベル、CIM_StorageExtent-GUID、ラベル、パーティションは表示しません
パーティションは1つのディスクのみに関連付けられていますか?複数の物理ディスクにストライピング/スパン/などすることができます。