最近做一個小工具, C# 對 移動硬盤的檢測,
var arr = DriveInfo.GetDrives();
得出的所有磁盤,發現對於移動硬盤,DriveType 不是 Removable 類型,而是 Fixed 枚舉類型。
C#檢測移動硬盤,網上找了很久,沒有現成正確的代碼,只有自己想辦法了。
代碼如下:
public static List<string> GetListDisk() { List<string> lstDisk = new List<string>(); ManagementClass mgtCls = new ManagementClass("Win32_DiskDrive"); var disks = mgtCls.GetInstances(); foreach (ManagementObject mo in disks) { //if (mo.Properties["InterfaceType"].Value.ToString() != "SCSI" // && mo.Properties["InterfaceType"].Value.ToString() != "USB" // ) // continue; if (mo.Properties["MediaType"].Value == null || mo.Properties["MediaType"].Value.ToString() != "External hard disk media") { continue; } //foreach (var prop in mo.Properties) //{ // Console.WriteLine(prop.Name + "\t" + prop.Value); //} foreach (ManagementObject diskPartition in mo.GetRelated("Win32_DiskPartition")) { foreach (ManagementBaseObject disk in diskPartition.GetRelated("Win32_LogicalDisk")) { lstDisk.Add(disk.Properties["Name"].Value.ToString()); } } //Console.WriteLine("-------------------------------------------------------------------------------------------"); } return lstDisk; }
注:通過找 Win32_DiskDrive,Win32_DiskPartition,Win32_LogicalDisk 對應的屬性值的規律, 三個之間的關系 得出 移動硬盤的盤符。