2013-08-01 42 views
2

我使用WMI來獲取有關計算機上的硬盤驅動器的信息,但我無法找到允許我識別哪個硬盤驅動器用作系統驅動器的屬性,其中Windows已安裝。如何識別使用Win32_DiskDrive的系統硬盤

ManagementObjectSearcher mos_HDD = new ManagementObjectSearcher("select * from Win32_DiskDrive"); 

我試着遍歷所有的屬性,但都沒有看起來像它擁有我需要的信息。

foreach (ManagementObject mo_HDD in mos_HDD.Get()) 
{ 
     Console.WriteLine("HDD Properties:"); 
     foreach (PropertyData pd in mo_HDD.Properties) 
     { 
      Console.WriteLine("\tName: {0} \tValue: {1}", pd.Name, pd.Value != null ? pd.Value.ToString() : "NULL"); 
     } 
} 

我也看了MSDN文檔,但W/O運氣。

我在這裏要做的是獲取某種類型的系統驅動器的標識符(如簽名或序列號)。

任何幫助獲取此信息是高度讚賞。

回答

0

您鏈接的文檔給出了答案:

string SerialNumber; 
uint32 Signature; 

你的管理對象將在它的屬性。

如果您對這些值爲空,那麼問題在於您使用的是不支持它們的Windows版本。

SerialNumber 
... 
Windows Server 2003 and Windows XP: This property is not available. 

在這種情況下,你必須使用簽名屬性,但是這需要XP SP3,我相信。

+0

感謝您的詳細信息。我檢查了這兩個和SerialNumber看起來很好,但問題是當系統中有多個硬盤。我怎麼知道哪一個存儲系統分區? –

+0

找到包含'Win32_LogicalDisk'的驅動器,其中'DeviceID' =='C:'(或安裝的任何驅動器盤符) – PhonicUK

+0

我無法找到解決方案,但這是最接近的,所以我是標記爲答案。 –

1

你可以得到它爲:

public static void Main() 
    { 
     try 
     { 
      ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\CIMV2", 
       "SELECT * FROM Win32_DiskDrive"); 

      foreach (ManagementObject queryObj in searcher.Get()) 
      {     
       Console.WriteLine("SerialNumber: {0}", queryObj["SerialNumber"]); 
       Console.WriteLine("Signature: {0}", queryObj["Signature"]); 
      } 
     } 
     catch (ManagementException e) 
     { 

     } 
    }