使用WMI获取制造商序列号的系统硬盘

时间:2016-05-03 10:36:06

标签: c++ wmi wmi-query

我想在我的c ++项目中使用WMI获取系统硬盘的制造商序列号。

我已经能够从Win32_DiskDrive类中查询SerialNumber。 但是,这会返回四个序列号,因为我有四个硬盘。我只想知道系统盘的硬盘序列号,但我无法格式化正确的查询。

之前有人这样做并知道如何构建此查询吗?

3 个答案:

答案 0 :(得分:0)

要获取系统 HDD ,首先必须找出哪个硬磁盘包含您的系统分区

使用Win32_DiskPartition检索DiskIndex属性,并使用它来查询Win32_DiskDriveIndex属性。

两者都是Uint32

This SO Answer描述了一种检索与卷关联的DiskDrives的方法。

"How can I correlate logical drives and physical Drives" on TechNet也可以提供帮助。

答案 1 :(得分:0)

首先,您必须弄清楚您的SystemDrive是什么,然后查询其他WMI表以获取serialNumber。 WMI在许多表中保留序列号,您必须更好地选择哪个表可以满足您的用例。如果serialNumber是你唯一的用例,那么查询Win32_LogicalDisk,如果没有,写一个评论,我们可以从那里开始工作:)

Select SystemDrive  from Win32_OperatingSystem

Select VolumeSerialNumber  FROM Win32_LogicalDisk where (DriveType = '2' or DriveType = '3') AND deviceid= '<SystemDrive>'

<强>更新

Select  Index from Win32_DiskPartition where BootPartition ='TRUE'
Select  SerialNumber from Win32_DiskDrive where index='<Index>'

注意:让几台机器干运行。

答案 2 :(得分:0)

1.GetSystemDirectory()获取系统分区。例如,C:\ Windows \ System32和C:是系统分区。

2.从Win32_DiskPartition获取系统分区的DiskIndex

3.从Win32_DiskDrive获取SerialNumber,DiskIndex是第2步