[英]Getting manufacturer serialnumber of system harddrive with WMI
我想在我的c ++项目中使用WMI获取系统硬盘的制造商序列号。
我已经能够从Win32_DiskDrive类中查询SerialNumber。 但是,这会返回四个序列号,因为我有四个硬盘。 我只想知道系统盘的硬盘序列号,但我无法格式化正确的查询。
以前做过这个的人都知道如何构建这个查询?
使用Win32_DiskPartition检索DiskIndex
属性并使用它来查询Win32_DiskDrive及其Index
属性。
两者都是Uint32
。
本SO答案描述了一种检索与卷关联的DiskDrives的方法。
TechNet上的“我如何关联逻辑驱动器和物理驱动器”可能会有所帮助。
首先,您必须弄清楚什么是您的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>'
注意:为几台机器进行干运行。
1.GetSystemDirectory()获取系统分区。例如,C:\\ Windows \\ System32和C:是系统分区。
2.从Win32_DiskPartition获取系统分区的DiskIndex
3.从Win32_DiskDrive获取SerialNumber,DiskIndex是第2步
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.