2009-08-17 169 views
4

我使用Win32_BaseBoard SerialNumber属性来获取主板的序列号,并且它在大部分时间都工作,但有时在某些计算机上,我得到SerialNumber =“Base Board Serial Number”作为结果。WMI Win32_BaseBoard SerialNumber

有没有一种以更有效的方式获得此序列号的程序化方法,或者它只是一个制造商问题?我听说所有的主板都有序列号,没有例外。这是真的?

回答

1

该信息可能未公开给WMI。您可以使用wbemtest.exe(或WMI CIM Studio,如果已安装它)轻松地进行确认。在我当前的计算机上,Win32_BaseBoard.SerialNumber不是null,而是一个空字符串。如果是这种情况,您需要找到另一种方式来获取这些信息。

1

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

4

各种WMI查询返回的序列号是否正确取决于设备制造商。请参阅此计算器问题的答案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