[Visual Studio]C# 讀取磁碟機、光碟機與USB資訊,屬性與其他

  • 5829
  • 0

[Visual Studio]C# 讀取磁碟機、光碟機與USB資訊,屬性與其他

前言:這次比較偷懶,畢竟只是一個工具,有興趣的就直接抓回去測就知道啦~

 


載點:DeviceImformation.rar

 


說明:

目前這樣可以知道本機有哪些可使用的媒體與類型,再來就是檢測USB內容與CD內容了吧…

第一個按鈕是直接去讀取所有的東西與屬性,速度較慢。

第二個速度很快,並且可以了解磁碟機代號與是否有媒體存在

第三個是因為前兩個只有列舉出幾種Property,故地三個是可以讓使用者查一下代碼表

               回去改Visual Studio的屬性值。

註:屬性可能回傳null,例如沒有光碟或沒插卡的光碟機與讀卡機,在媒體類型那邊就是NULL。


Code:

Part1

   1:              using (ManagementClass Device = new ManagementClass(@"Win32_Diskdrive"))
   2:              {
   3:                  ManagementObjectCollection MOC = Device.GetInstances();
   4:                  foreach (ManagementObject MO in MOC)
   5:                  {
   6:                  
   7:                      listBox1.Items.Add(MO["DeviceId"]);//取得第幾個Device
   8:                      listBox1.Items.Add(MO["PNPDeviceID"]);//取得DEVICE資訊
   9:  
  10:                      foreach (ManagementObject b in MO.GetRelated("Win32_DiskPartition"))
  11:                      {
  12:                              listBox1.Items.Add( b["Name"]);//取得磁碟機分割磁區號碼
  13:                          foreach (ManagementBaseObject c in b.GetRelated("Win32_LogicalDisk"))
  14:                              listBox1.Items.Add(c["Name"]);//取得磁碟機代號
  15:                      }
  16:                  }
  17:              }

Part2

   1:   ManagementObjectSearcher search1 = new ManagementObjectSearcher("SELECT * FROM  Win32_LogicalDisk");//搜尋所有Win32_LogicalDisk
   2:              foreach (ManagementObject obj in search1.Get())
   3:              {
   4:                  
   5:                  listBox1.Items.Add("Letter: " + obj["Caption"].ToString());//磁碟機代號
   6:                  listBox1.Items.Add("Description: " + obj["Description"].ToString());//
   7:  
   8:                  try
   9:                  {
  10:                      listBox1.Items.Add("File System: " + obj["FileSystem"].ToString());//媒體類型
  11:                  }
  12:                  catch
  13:                  {
  14:                       listBox1.Items.Add("File System: " + "No Disk");//沒有媒體
  15:                  }
  16:              } 

Part3

   1:  ManagementObjectSearcher search1 = new ManagementObjectSearcher("SELECT * FROM  Win32_LogicalDisk");
   2:              foreach (ManagementObject obj in search1.Get())
   3:              {
   4:                  foreach (PropertyData prop in obj.Properties)
   5:                  {
   6:                      listBox1.Items.Add(prop.Name);
   7:                  }
   8:              }

 


圖片:

s1

s2

s3