views:

386

answers:

2

I asked a somewhat related question but I want it to make it more concrete and 'programming' oriented, so here it goes:

Does any body know, if there is a .NET, JAVA or any other Framework, library, .jar file or what ever: to access S.M.A.R.T. Statistics?

Thanks!

+5  A: 

You can get SMART statistics from .Net via the System.Management and WMI class "MSStorageDriver_ATAPISmartData".

Here is a short example that I created for you. Start a new console project and add a reference to the System.Management assembly, then paste this into Program.cs:

using System;
using System.Collections.Generic;
using System.Text;
using System.Management;

namespace GetSMART
{
    class Program
    {
     static void Main(string[] args)
     {
      ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher(
       "root\\WMI",
       "SELECT * FROM MSStorageDriver_ATAPISmartData"
      );

      foreach (ManagementObject item in searcher.Get())
      {
       foreach( PropertyData prop in item.Properties )
       {
       Console.WriteLine("{0} = {1}",
        prop.Name, prop.Value);
       }
      }

      Console.ReadLine();
     }
    }
}
wizlb
Beautiful, thank you!... too bad it isn't Java hehe.
ramayac
No problem. FYI, I just searched for Java WMI and there are a lot of articles out there.
wizlb
+1  A: 

There is a complete article on using WMI to do exactly what you ask for in C# and its got info on reverse engineering the SMART data, what the measurements mean and some links to articles on disk drive failure Smart and WMI

mikej