You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取/计算磁盘S.M.A.R.T剩余寿命百分比?

获取Windows 11磁盘剩余寿命(CrystalDiskInfo风格)的通用方案

问题本质

CrystalDiskInfo显示的「剩余寿命」(Health Status)是基于厂商自定义的SMART属性逻辑计算的,不同品牌磁盘的寿命判定规则差异极大——没有统一的通用SMART属性对应寿命值,这就是你手动加权求和无效、PowerShell Wear 字段返回0的核心原因:Wear 仅适配部分厂商的磁盘固件,多数设备不会返回有效值。

可行解决方案

1. 直接调用CrystalDiskInfo命令行工具

CrystalDiskInfo自带CLI版本,可直接导出标准化的健康状态,无需自行解析SMART:

  • 导出命令示例:
    & "C:\Program Files\CrystalDiskInfo\CrystalDiskInfo64.exe" /export txt "C:\temp\disk_health.txt"
    
  • 提取健康值的PowerShell脚本:
    $healthContent = Get-Content "C:\temp\disk_health.txt"
    $healthStatus = ($healthContent | Where-Object { $_ -match "Health Status" }).Split(":")[1].Trim()
    
    提取结果和CrystalDiskInfo GUI显示的数值完全一致。

2. 分厂商解析SMART属性

若不想依赖第三方工具,需针对主流厂商的专属SMART属性适配:

  • 三星/金士顿:关注SMART属性ID 177(Wear Leveling Count),剩余寿命 = 当前值 / 阈值 × 100%(例:当前值99、阈值100时,寿命为99%)
  • 西部数据/希捷:关注SMART属性ID 231(Media Wearout Indicator),剩余寿命等于该属性的当前值
  • 英特尔:关注SMART属性ID 225(Host Writes Percentage),剩余寿命 = 100% - 当前值(例:当前值1时,寿命为99%)
  • 其他厂商:查阅厂商官方文档,寻找标注为「Wear Leveling」「Media Wearout」类的SMART属性,这类属性直接关联寿命计算

3. 关于PowerShell Wear 字段返回0的说明

Get-StorageReliabilityCounter 的 Wear 字段依赖磁盘固件对Windows存储可靠性计数器标准的支持,返回0意味着你的磁盘不兼容该接口,只能用上述两种方案替代。

关键提示

不存在完全通用的手动计算方法——各厂商的寿命算法均为闭源逻辑,CrystalDiskInfo也是靠内置的厂商规则库实现统一显示,因此优先使用其CLI工具是最稳妥的方案。

内容的提问来源于stack exchange,提问作者Дмитрий Витязь

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:38:14