2011-12-13 25 views
1

我正在尋找一種方式來掃描硬盤,而不會導致「軟盤稅」的系統嘗試讀取軟驅,看看是否有一個磁盤在那裏的。獲取本地驅動器沒有擊中軟驅

重要:我知道如何使用DriveInfo.GetDrives得到的只是硬盤,但涉及後已創建的列表過濾。如果可能,我想要在之前過濾

+2

呀,這就是我所說的:) – Benjol

+1

我們是否允許使用螺絲刀作爲答案的一部分......你知道,要斷開它並在其位置放置一些有用的東西? –

+0

@MarcGravell,它可能還沒到那:)老實說,我正在認真考慮它,因爲我顯然是唯一一個被它困擾的人。 – Benjol

回答

2

你可以試試這個:

ConnectionOptions opts = new ConnectionOptions(); 
ManagementScope scope = new ManagementScope(@"\\.\root\cimv2", opts); 
SelectQuery diskQuery = new SelectQuery("SELECT * FROM Win32_LogicalDisk WHERE (MediaType != 0 AND MediaType = 11 OR MediaType = 12)"); 

ManagementObjectSearcher searcher = new ManagementObjectSearcher(diskQuery); 
ManagementObjectCollection diskObjColl = searcher.Get(); 

介質類型11和12都沒有軟盤。你可以找到完整的文檔在這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173%28v=vs.85%29.aspx

+0

儘管我實際上使用了另一個(因爲它運行速度更快),但我還是把這一個標記爲'正確'的答案,但有一個有爭議的假設:A和B是要避免的軟盤驅動器。 – Benjol

1

不是這樣......驅動器信息根本沒有功能在getDrives調用期間過濾或排除任何類型的驅動器。

但也許還有另一種方法。 (這未經測試,但可能是一個想法:)如果您只是在尋找特定驅動器的可用性,那麼可以使用特定驅動器的名稱實例化DriveInfo類並查看它是否有效?

+0

好點,我可以在C開始,並基於'System.Environment.GetLogicalDrives那裏工作了()' 。尼斯。 – Benjol

0

CD驅動器,軟盤驅動器沒有準備好 那麼你可以試試這個:「誰使用軟盤」

foreach (var dr in DriveInfo.GetDrives()) 
{ 
    if (dr.IsReady == true) 
    { 
     Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType)); 
    } 
} 
相關問題