因此,我已使用此代码获取S.M.A.R.T. Windows WMI中的硬盘驱动器诊断信息:
http://vasters.com/archive/Reading-ATAPI-SMART-Data-From-Drives-Using-NET-Temperature-Anyone.html
它可以在大多数计算机上使用,而不能在其他计算机上使用。经过一些研究和样本测试,我发现它不适用于硬盘驱动器通过PCI Express而不是SATA连接的计算机。
var searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
foreach (ManagementObject queryObj in searcher.Get())
{
//do stuff
}
这是我得到异常的地方:
System.Management.ManagementException:'不支持'
还有其他方法可以执行此操作,或者在此代码中添加一些内容以使其正常工作吗?
答案 0 :(得分:0)
我到处搜索了此代码,找不到适合我的代码,但最终在另一个论坛上找到了它,因此使用起来真的很简单。 只是从我的示例中获得WMI信息的另一种方法。您可以在Microsoft DOC中找到WMI Win32_DiskDrive的更多属性 https://github.com/Mityugin/greentest
string NamespacePath = "\\\\.\\ROOT\\cimv2";
string ClassName = "Win32_DiskDrive";
oClass = new ManagementClass(NamespacePath + ":" + ClassName);
foreach (ManagementObject oObject in oClass.GetInstances())
{
var sign = Convert.ToString(oObject["Signature"]);
var model = Convert.ToString(oObject["Model"]);
var status = Convert.ToString(oObject["Status"]);
if (Equals(sign,""))
{
TextBox1.AppendText("DISK model: " + model);
TextBox1.AppendText(Environment.NewLine);
TextBox1.AppendText("Status: " + status);
TextBox1.AppendText(Environment.NewLine);
if (!status.Equals("OK") || !model.Contains("SSD"))
{
//Here is info if Disk is not OK or model not SSD
}
}
}