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

时间:2014-05-15 10:25:10

标签: c++ windows wmi identifier motherboard

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

"SELECT SerialNumber FROM Win32_BaseBoard"

我自己编写了查询,所以我不确定它是否正确,但它确实返回了一些内容: /9637CW1/CN1296131Q0BA8/。返回的字符串在多台计算机上的格式相同,所以我假设查询是正确的。

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

谢谢:)

1 个答案:

答案 0 :(得分:1)

我发现检索主板的序列号可能会导致非常不同的结果,具体取决于制造商和分销渠道。一些向最终客户销售并且具有良好的设备维修支持流程的制造商将与设置WMI的序列号信息保持一致。其他提供OEM类设备的制造商将依靠OEM来设置序列号。

由于序列号在基于制造商的特定域或名称空间内,因此不可能不同的制造商可能使用相同的序列号,因此您确实需要知道制造商和序列号。< / p>

某些销售点终端与序列号一致,如果母板发生故障,更换母板的部分程序是将更换板的序列号设置为更换板的序列号。这意味着某人可能拥有与使用LAN NIC MAC欺骗类似的多个设备的相同序列号。

WMI查询将对提供的序列号产生影响。除序列号外,还有资产标签属性。

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

在Dell笔记本电脑上使用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应用程序。这类似于PC的输出我自己从购买的部件构建,这些部件也没有序列号PC运行的是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 O.E.M.

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 O.E.M.

Query for SELECT * FROM Win32_ComputerSystemProduct
  SMBIOS Name: EIN70-SAM
  SMBIOS IdentifyingNumber: None
  SMBIOS UUID: 03000200-0400-0500-0006-000700080009