我試圖通過循環DriveInfo.GetDrives()
結果來識別驅動器類型。
但是對於USB和軟盤我都得到相同的值DriveType.Removable
。如何區分USB和軟盤設備?
我該如何區分它們?
我試圖通過循環DriveInfo.GetDrives()
結果來識別驅動器類型。
但是對於USB和軟盤我都得到相同的值DriveType.Removable
。如何區分USB和軟盤設備?
我該如何區分它們?
您可以使用WMI(Windows Management Instrumentation)獲取更多內容,而不僅僅是獲取DriveInfo類中的內容。在這種情況下,您可以獲得接口類型,這將是USB驅動器的「USB」。
示例代碼如下。您需要添加對System.Management
的引用。
using System.Management;
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_DiskDrive");
foreach(ManagementObject queryObj in searcher.Get())
{
foreach(ManagementObject o in queryObj.GetRelated("Win32_DiskPartition"))
{
foreach(ManagementBaseObject b in o.GetRelated("Win32_LogicalDisk"))
{
Debug.WriteLine(" #Name: {0}", b["Name"]);
}
}
// One of: USB, IDE
Debug.WriteLine("Interface: {0}", queryObj["InterfaceType"]);
Debug.WriteLine("--------------------------------------------");
}
}
catch (ManagementException f)
{
Debug.WriteLine(f.StackTrace);
}
僅供參考,this MSDN page文檔的可訪問屬性的完整列表(因爲你不會對此提供自動)。
我沒有理由在這裏爲遲到的答案道歉。這不是一個論壇,如果我沒有弄錯的話,鼓勵未經回答的necromancy問題。 – 2010-12-23 15:54:47
死靈。優秀的詞用法! – Amy 2010-12-23 16:15:17
乾淨的例子! – 2013-01-02 15:58:39
光驅和軟驅還沒有準備好,所以你可以試試這個:
foreach (var dr in DriveInfo.GetDrives())
{
if (dr.IsReady == true)
{
Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType));
}
}
這是簡單的方法USB和軟盤設備
來區分你想這樣做,爲什麼呢? – 2010-06-17 10:30:10
你爲什麼需要這個?天真的嘗試可以檢查驅動器的大小。 – 2010-06-17 10:32:31
我需要這個,因爲我的程序需要一個USB驅動器,並且我想驗證用戶輸入。檢查尺寸是不安全的,也可能有小容量的USB設備。謝謝, – 2010-06-17 10:34:59