wmic bios获取serialnumber / Win32_BIOS返回00000000

时间:2017-12-25 22:16:55

标签: delphi wmi bios serial-number

我正在尝试获取BIOS的序列号。

我使用了(Win32_BIOS)Delphi代码,它在多个设备上运行良好,但有些设备返回(00000000)。 当我在终端尝试(wmic bios get serialnumber)时,得到相同的结果(00000000)。 我已经检查了WMI服务是否正在运行/更新,但仍然得到相同的结果。

当我尝试使用WMI Diagnosis Utility时,它会显示消息(与您的窗口不兼容)。

注意: 在某些处理(windows7 32位)

的设备上返回结果

非常感谢。

1 个答案:

答案 0 :(得分:0)

WMI通过SMBIOS获取大部分系统信息。该标准允许制造商/ OEM通过固件提供信息。

在您的情况下,Win32_BIOS与系统信息结构中的序列号对应。这是在2.0+标准中添加的,因此首先您必须检查电路板是否比这更旧。在任何情况下,除非计算机来自OEM,否则通常不会设置。

然而,通常有更多信息。如果主板支持SMBIOS 2.1+,则在同一结构上有UUID。有些制造商没有填写它们,但我发现这个数字比其他制造商更成功。请注意,这个UUID不在Win32_board,Win32_ComputerSystemProduct中:

wmic path win32_computersystemproduct get uuid

SMBIOS中有更多可以用于识别的信息,理想情况下你应该将它们全部组合在一起,所以即使它的大部分都被归零,你也可以获得合理的结果。请注意,您不能通过GetSystemFirmwareTable从表中获取值,因为Windows会将部分内容归零(请参阅此.doc from Microsoft)。

您也可以尝试使用CPUID,但由于PIII存在争议,大多数计算机都没有启用序列号(或者根本不支持它)。请注意,Win32_CPU WMI类中的ProcessorID不会提供此值it also comes from SMBIOS

总之,尽量从SMBIOS获取尽可能多的值(SerialNumber,UUID,处理器标识,硬盘等等)和其他来源(MAC地址,CPUID,Windows产品信息等),以及请注意,仍然无法保证这是唯一的。