如果输出的 MediaType 没有明确标识为 SSD 或 HDD,可以使用以下 PowerShell 命令进一步检查: Get-PhysicalDisk | Select-Object DeviceID, MediaType, SerialNumber
我刚研究了一下,有个开源的工具叫 smartmontools ,www.smartmontools.org/wiki/Downloa...
你可以下载安装,把安装目录中 bin 目录的 "smartctl" 二进制文件拿出来单独用,1M 左右大小。
这个文件可以读取输出硬盘的序列号。 我的电脑一块 m2 固态 一块 sata 固态,m2 使用上述命令无法读取输出序列号,smartctl 正常读取输出。
又找到一个办法。发现了一个项目:github.com/a1ive/libcdi
这个是无忧论坛的 wintoflash 大佬编写的,windows 获取硬盘信息的,编译好的 exe 才 78k,直接拿来用。
以管理员权限在 cmd 中运行这个 exe,就输出硬盘的所有信息了,包括能查询的硬盘序列号。
golang 用 exec 使用管理员权限调用这个 exe,捕获输出,过滤关键词 Serial 就行了 。
如果你会点 c 或者 c++,可以单独抽离出来 libcdi 获取序列号的方法。
用 cditest.exe 只输出序列号的话,用
cditest.exe | findstr “Serial:”
输出硬盘名称和序列号
cditest.exe | findstr /i /c:”Model:” /c:”Serial:”
推荐文章: