我正在尋找一種方式來掃描硬盤,而不會導致「軟盤稅」的系統嘗試讀取軟驅,看看是否有一個磁盤在那裏的。獲取本地驅動器沒有擊中軟驅
重要:我知道如何使用DriveInfo.GetDrives
得到的只是硬盤,但涉及後已創建的列表過濾。如果可能,我想要在之前過濾。
我正在尋找一種方式來掃描硬盤,而不會導致「軟盤稅」的系統嘗試讀取軟驅,看看是否有一個磁盤在那裏的。獲取本地驅動器沒有擊中軟驅
重要:我知道如何使用DriveInfo.GetDrives
得到的只是硬盤,但涉及後已創建的列表過濾。如果可能,我想要在之前過濾。
你可以試試這個:
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
儘管我實際上使用了另一個(因爲它運行速度更快),但我還是把這一個標記爲'正確'的答案,但有一個有爭議的假設:A和B是要避免的軟盤驅動器。 – Benjol
不是這樣......驅動器信息根本沒有功能在getDrives調用期間過濾或排除任何類型的驅動器。
但也許還有另一種方法。 (這未經測試,但可能是一個想法:)如果您只是在尋找特定驅動器的可用性,那麼可以使用特定驅動器的名稱實例化DriveInfo類並查看它是否有效?
好點,我可以在C開始,並基於'System.Environment.GetLogicalDrives那裏工作了()' 。尼斯。 – Benjol
CD驅動器,軟盤驅動器沒有準備好 那麼你可以試試這個:「誰使用軟盤」
foreach (var dr in DriveInfo.GetDrives())
{
if (dr.IsReady == true)
{
Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType));
}
}
呀,這就是我所說的:) – Benjol
我們是否允許使用螺絲刀作爲答案的一部分......你知道,要斷開它並在其位置放置一些有用的東西? –
@MarcGravell,它可能還沒到那:)老實說,我正在認真考慮它,因爲我顯然是唯一一個被它困擾的人。 – Benjol