2008-11-18 63 views
1

有沒有人知道一種方法,以編程方式找出哪個物理磁盤容納給定的分區? 手動,我可以使用Start-> Run-> diskmgmt.msc找到此信息,我可以在其中看到(在我的計算機上)分區C:和D:位於磁盤1上,E:& F:位於磁盤0上。如何查找在C#中保存給定分區的磁盤?

這是爲了優化某些文件處理操作,如果這些文件位於不同的物理磁盤上,可以並行地執行它們。

回答

3

通過查詢Win32_DiskDrive類,您可以使用WMI從System.Management命名空間獲取此信息。

Here's關於.NET中WMI的基本信息。

0

您確定分區僅與一個磁盤關聯嗎?它可以跨多個物理磁盤分條/跨越/等。

+0

是的,我意識到這種可能性。我一次只採取一步:) – 2008-11-18 21:39:31

1

除了了Arul的答案,這裏是一個鏈接,顯示瞭如何GETH磁盤< - 使用WMI從一個VBS腳本>分區協會:WMI Tasks: Disks and File Systems - >看到頁面上的最後一個例子。

編輯:更妙的是,在WMI here's a good article使用C#,這恰好也說明獲得磁盤驅動器所需要的WMI類之間的確切關係(例如\\\\.\\PHYSICALDRIVE0),它保存一個邏輯磁盤(例如,C:

1

看到HKEY_LOCAL_MACHINE \ SYSTEM \加載設備

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 - 所有,但看不到磁盤標籤,CIM_StorageExtent - GUID,標籤,分區(隱藏太)