我想在我的c ++项目中使用WMI获取系统硬盘的制造商序列号。
我已经能够从Win32_DiskDrive类中查询SerialNumber。 但是,这会返回四个序列号,因为我有四个硬盘。我只想知道系统盘的硬盘序列号,但我无法格式化正确的查询。
之前有人这样做并知道如何构建此查询吗?
答案 0 :(得分:0)
使用Win32_DiskPartition检索DiskIndex
属性,并使用它来查询Win32_DiskDrive的Index
属性。
两者都是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步