4 Stimmen

WMI Win32_BaseBoard SerienNummer

Ich habe die Eigenschaft Win32_BaseBoard SerialNumber verwendet, um die Seriennummer der Hauptplatine zu erhalten, und es funktioniert meistens, aber manchmal erhalte ich bei einigen Computern als Ergebnis SerialNumber = "Base Board Serial Number".

Gibt es eine programmatische Möglichkeit, diese Seriennummer auf effizientere Weise zu erhalten, oder handelt es sich einfach um ein Herstellerproblem? Ich habe gehört, dass alle Motherboards ausnahmslos mit einer Seriennummer geliefert werden. Stimmt das?

4voto

Richard Chambers Punkte 15587

Ob die Seriennummer, die von verschiedenen WMI-Abfragen zurückgegeben wird, korrekt ist oder nicht, hängt vom Hersteller des Geräts ab. Siehe die Antwort auf diese Stackoverflow-Frage, Motherboard ID - WMI C++ Zuverlässig? die eine Reihe von Beispielen enthält, die zeigen, dass die Ergebnisse variieren können.

Einige der Variablen sind, ob es sich um OEM-Geräte handelt oder nicht und ob die Geräte von einem Hersteller gekauft wurden, der an den Endkunden verkauft, wie z. B. Dell, oder von einem Hersteller, der Geräte an Wiederverkäufer verkauft, die die Geräte dann konfigurieren, oder ob die Geräte aus gekauften Teilen zusammengebaut wurden.

Diese Ergebnisse sind die Verarbeitung der Eigenschaften, die durch verschiedene WMI-Abfragen abgerufen werden.

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",

Hier ein Beispiel von einem Kassenterminal, das fehlende Seriennummerninformationen anzeigt. Die Absicht scheint zu sein, dass der Wiederverkäufer oder Händler oder ein anderer Anbieter seine eigene Seriennummer zusammen mit anderen Informationen zur Verfügung stellt, um das Terminal grundsätzlich neu zu kennzeichnen.

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

1voto

Es ist möglich, dass die Informationen nicht für WMI freigegeben sind. Sie können dies leicht mit wbemtest.exe (oder WMI CIM Studio, falls Sie es installiert haben) überprüfen. Auf meinem aktuellen Computer ist Win32_BaseBoard.SerialNumber nicht null, sondern eine leere Zeichenfolge. Wenn dies der Fall ist, müssen Sie einen anderen Weg finden, um diese Informationen zu erhalten.

1voto

Osita Punkte 11

Ich hatte ein ähnliches Problem. Sie können diese Abfrage ausprobieren und sehen, ob sie für Sie funktioniert. select UUID from Win32_ComputerSystemProduct

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X