主板ID – WMI C ++ – 可靠吗?

我在C ++类中使用WMI来检索我的主板的序列号。 查询如下:

"SELECT SerialNumber FROM Win32_BaseBoard" 

我自己写了这个查询,所以我不确定它是正确的,但它确实返回了一些东西: /9637CW1/CN1296131Q0BA8/ 。 返回的string是在多台计算机上相同的格式,所以我假设查询是正确的。

我的问题是:我真的在这里查询主板序列号吗? 因为我看到另一个名为"Win32_MotherboardDevice"类(它没有“序列号”属性)。 将它用作计算机标识符是个好主意吗? 我目前正在使用硬盘序列号,但是我认为使用更可靠的组件(如主板)的序列号会更好,因为硬盘比主板更有可能被更换。

谢谢 :)

我发现,根据制造商和分销渠道,检索母板的序列号会导致非常不同的结果。 一些向最终用户销售并具有良好的设备维修支持流程的制造商将为设置WMI的序列号信息保持一致。 其他厂商提供OEM型设备将依靠OEM来设置序列号。

由于序列号是基于制造商的特定域名或名称空间内的,因此不同的制造商可能已经使用了相同的序列号,这是可能的,所以您确实需要知道制造商和序列号。

某些销售点终端的序列号是一致的,在主板故障的情况下更换主板的部分程序是将替换板的序列号设置为被替换板的序列号。 这意味着有人可以为几台设备使用相同的序列号,类似于进行LAN NIC MAC欺骗。

WMI查询将对所提供的序列号有所不同。 除了序列号之外,还有一个资产标签属性。

看看Win32_MotherboardDevice的文档,并尝试一些属性,似乎没有太多有用的数据,当然不是类似于唯一的序列号。

在戴尔笔记本电脑上使用Windows XP时,当我运行使用WMI的C ++应用程序来查看几个不同的Select WMI查询的几个不同的属性的结果时,我得到以下结果:

 Connected to ROOT\CIMV2 WMI namespace Query for SELECT * FROM Win32_SystemEnclosure SMBIOS SerialNumber: 49495G1 SMBIOS Name: System Enclosure SMBIOS SMBIOSAssetTag: SMBIOS Manufacturer: Dell Inc. Query for SELECT * FROM Win32_BaseBoard SMBIOS SerialNumber: .49495G1.CN486438441035. SMBIOS Product: 0UY141 SMBIOS Name: Base Board SMBIOS Manufacturer: Dell Inc. Query for SELECT * FROM Win32_BIOS SMBIOS SerialNumber: 49495G1 SMBIOS Name: Phoenix ROM BIOS PLUS Version 1.10 A10 SMBIOS Manufacturer: Dell Inc. Query for SELECT * FROM Win32_ComputerSystem SMBIOS Name: CIT-31204E1FF03 SMBIOS Manufacturer: Dell Inc. Query for SELECT * FROM Win32_ComputerSystemProduct SMBIOS Name: Latitude D830 SMBIOS IdentifyingNumber: 49495G1 SMBIOS UUID: 4C4C4544-0039-3410-8039-B4C04F354731 

看这台笔记本电脑的底部,我看到一个贴有条形码的标签,上面写着“SERVICE TAG 49495G1”,因此这台笔记本电脑的检索序列号是服务标签标识符。 我可以去戴尔网站,在支持区查找这个服务标签。

一个销售终端的意思是用POS Ready 7版本的Windows转售,提供了以下输出与相同的C ++ WMI应用程序。 这类似于我从购买的零件构建的个人电脑的输出,这些零件也没有序列号。该个人电脑运行Windows 8.1。

 Connected to ROOT\CIMV2 WMI namespace Query for SELECT * FROM Win32_SystemEnclosure SMBIOS SerialNumber: None SMBIOS Name: System Enclosure SMBIOS SMBIOSAssetTag: None SMBIOS Manufacturer: To Be Filled By OEM Query for SELECT * FROM Win32_BaseBoard SMBIOS SerialNumber: None SMBIOS Product: EIN70-SAM SMBIOS Name: Base Board SMBIOS Manufacturer: INTEL Corporation Query for SELECT * FROM Win32_BIOS SMBIOS SerialNumber: None SMBIOS Name: BIOS Date: 10/15/13 20:06:15 Ver: 04.06.05 SMBIOS Manufacturer: American Megatrends Inc. Query for SELECT * FROM Win32_ComputerSystem SMBIOS Name: GENPOSA-1 SMBIOS Manufacturer: To be filled by OEM Query for SELECT * FROM Win32_ComputerSystemProduct SMBIOS Name: EIN70-SAM SMBIOS IdentifyingNumber: None SMBIOS UUID: 03000200-0400-0500-0006-000700080009