4

我使用 Win32_BaseBoard SerialNumber 属性来获取主板序列号,它在大多数情况下都可以工作,但有时在某些计算机上我会得到 SerialNumber = "Base Board Serial Number" 结果。

是否有以更有效的方式获取此序列号的编程方式,或者这只是制造商的问题?我听说所有主板都带有序列号,无一例外。这是真的?

4

3 回答 3

4

各种 WMI 查询返回的序列号是否正确取决于设备的制造商。查看这个 stackoverflow 问题的答案,Motherboard ID - WMI C++ Reliable? 其中包含几个示例,表明您的结果可能会有所不同。

一些变量是设备是否为 OEM,以及设备是从向最终客户(如戴尔)销售的制造商购买,还是从将设备销售给然后配置设备的经销商的制造商购买,或者设备是从购买的零件。

这些结果正在处理由几个不同的 WMI 查询检索到的属性。

L"SELECT * FROM Win32_SystemEnclosure",
L"SELECT * FROM Win32_BaseBoard",
L"SELECT * FROM Win32_BIOS",
L"SELECT * FROM Win32_ComputerSystem",
L"SELECT * FROM Win32_ComputerSystemProduct",
L"SELECT * FROM Win32_MotherboardDevice",

例如,这里来自显示缺少序列号信息的销售终端。意图似乎是经销商或经销商或其他供应商将提供他们自己的序列号以及其他信息,以基本上重新标记终端。

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
于 2015-07-12T15:53:30.437 回答
1

信息可能不会暴露给 WMI。您可以使用 wbemtest.exe(或 WMI CIM Studio,如果已安装)轻松确认这一点。在我当前的计算机上 Win32_BaseBoard.SerialNumber 不是 null 而是一个空字符串。如果是这种情况,您将需要找到另一种方法来获取此信息。

于 2009-08-18T16:47:42.900 回答
1

我有一个类似的问题。你可以试试这个查询,看看它是否适合你。select UUID from Win32_ComputerSystemProduct

于 2012-04-09T04:25:03.960 回答