【问题标题】:How to get ATAPI SMART Data according to disks using C#/.NET如何使用 C#/.NET 根据磁盘获取 ATAPI SMART 数据
【发布时间】:2018-01-22 16:46:18
【问题描述】:

我想编写一个应用程序来监控系统中一个或多个磁盘的状态。

我发现我可以通过 WMI "root/wmi" 和 MSStorageDriver 管理一个磁盘,并在这些磁盘中查询实际值(数据和阈值),如下链接 - http://wutils.com/wmi/root/wmi/msstoragedriver_atapismartdata/ 到目前为止,它运行良好:-)

但是,直到现在我还没有管理多个磁盘。我不知道如何根据磁盘获取SMART数据

谁能帮我解决这个问题?

非常感谢, 铨

【问题讨论】:

    标签: c# windows hard-drive


    【解决方案1】:

    我尝试并成功了,我想分享这个问题的答案

    • 获取 PNPDeviceID
    • 相应地获取 PNPDevice 的 InstanceName
    • 从 InstanceName 获取 S.M.A.R.T 数据

    示例代码

    public string   PNPDeviceID
        {
            set
            {
                this.m_PNPDeviceID = value;
                this.InstanceName = null;
                this.QueryObjATAPISmartData = null;
    
                SearcherPnPDeviceId = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPDeviceId");
                foreach (ManagementObject queryObj in SearcherPnPDeviceId.Get())
                {
                    if (queryObj["PNPDeviceID"] != null)
                    {
                        if (this.PNPDeviceID.ToUpper() == queryObj.GetPropertyValue("PNPDeviceID").ToString().ToUpper())
                        {
                            if (queryObj["InstanceName"] != null)
                            {
                                this.InstanceName = queryObj["InstanceName"].ToString();
                                break;
                            }
                        }
                    }
                }
    
                if (this.InstanceName != null)
                {
    
                    SearcherATAPISmartData = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
                    foreach (ManagementObject queryObj in SearcherATAPISmartData.Get())
                    {
                        if (queryObj["InstanceName"] != null)
                        {
                            if (this.InstanceName.ToUpper() != queryObj.GetPropertyValue("InstanceName").ToString().ToUpper())
                            {
                                continue;
                            }
                        }
                        this.QueryObjATAPISmartData  = queryObj;
                        break;
                    }  
          }
    

    }

    之后,您可以获取 QueryObjATAPISmartData 的任何属性

    问候, 铨

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 2020-04-21
      • 2021-04-11
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多