2012-02-02 28 views
4

我正在編寫自己的文件搜索(爲什麼,因爲我想/可以 - 不尋找一個現有的程序)。我可以通過使用DriveInfo.GetDrives()方法獲得c#中的所有驅動器。理想情況下,我想只在並行磁盤驅動器上運行搜索,而在同一個驅動器上的分區依次運行它們。這樣我就不會因爲GetDrives返回所有分區或可移動媒體而導致驅動器不斷尋找。我知道如果它是USB驅動器還是硬盤驅動器,我可以告訴它類型?我如何才能完成DriveInfo或其他任何方法?如果一個驅動器是一個分區或一個單獨的硬盤

回答

3

This related question展示瞭如何找出使用WMI(在System.Management找到):

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"]); 
} 
+0

所以DiskIndex是物理驅動器? – 2012-02-02 14:41:48

+0

從[Win32_DiskPartition的文檔](http://msdn.microsoft.com/en-us/library/windows/desktop/aa394135(v = vs.85).aspx)中,DiskIndex是「包含磁盤的索引號這個分區「。 – 2012-02-02 14:44:34

+0

@Brad - 提供的解決方案不適合您嗎? (您拿走了答案...) – 2012-02-03 03:22:33

相關問題