using System; using System.Collections.Generic; using System.Text; using System.Management; using System.Management.Instrumentation; namespace temperature { class Program { const byte TEMPERATURE_HDD = 194; static public List GetDriveTemp() { List retval = new List(); try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData"); //loop through all the hard disks foreach (ManagementObject queryObj in searcher.Get()) { byte[] arrVendorSpecific = (byte[])queryObj.GetPropertyValue("VendorSpecific"); //Find the temperature attribute int tempIndex = Array.IndexOf(arrVendorSpecific, TEMPERATURE_HDD); retval.Add(arrVendorSpecific[tempIndex + 5]); } } catch (ManagementException err) { Console.WriteLine("An error occurred while querying for WMI data: " + err.Message); } return retval; } static void Main(string[] args) { List ls = GetDriveTemp(); foreach (byte b in ls) Console.WriteLine(b); } } }