c# - 通过 WMI .NET C# 检索硬盘驱动器信息
问题描述
因此,我使用此代码从 Windows WMI 获取 SMART 硬盘驱动器诊断信息:
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:“不支持”
有没有其他方法可以做到这一点,或者在这段代码中添加一些东西来使它工作?
解决方案
我到处搜索此代码,找不到适合我的代码,但最终在另一个论坛上找到了,所以它的使用非常简单。仅从我的示例中获取 WMI 信息的另一种方式。您可以在 Microsoft 文档https://github.com/Mityugin/greentest中找到 WMI Win32_DiskDrive 的更多属性
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
}
}
}
推荐阅读
- angular - 登录 rwditects 到在浏览器中打开的 url 后,使用 inappbrowser 应用程序用科尔多瓦问题包装 Angular 应用程序
- java - 无需 1+n+n*m 查询即可延迟加载整个实体图的 JPA 方法?
- amazon-web-services - 如何在 7 天内自动忽略 AWS CodePipeline Approval
- elasticsearch - 无法使用日期范围实现聚合
- plot - 在gnuplot中绘制极坐标中的角度与半径
- c++ - 模板化运算符 ==
- javascript - 使用 GraalVM 从 javascript 将变量参数传递给 java 函数
- selenium - 如何使用 Selenium 处理和操作其中的 Div 弹出窗口和选项卡
- angular - Angular 6 - 引导单选按钮
- html - 将 li 中的文本居中在 div 中的 ul 内