Win32_BaseBoard SerialNumber プロパティを使用してマザーボードのシリアル番号を取得しましたが、ほとんどの場合は機能しますが、結果として SerialNumber = "Base Board Serial Number" を取得するコンピュータもあります。
より効率的な方法でこのシリアル番号をプログラムで取得する方法はありますか、それとも単に製造元の問題ですか? すべてのマザーボードには例外なくシリアル番号が付いていると聞きました。これは本当ですか?
Win32_BaseBoard SerialNumber プロパティを使用してマザーボードのシリアル番号を取得しましたが、ほとんどの場合は機能しますが、結果として SerialNumber = "Base Board Serial Number" を取得するコンピュータもあります。
より効率的な方法でこのシリアル番号をプログラムで取得する方法はありますか、それとも単に製造元の問題ですか? すべてのマザーボードには例外なくシリアル番号が付いていると聞きました。これは本当ですか?
さまざまな WMI クエリによって返されるシリアル番号が正しいかどうかは、デバイスの製造元によって異なります。このスタックオーバーフローの質問への回答、マザーボード ID - WMI C++ の信頼性を参照してください。これには、結果が異なる可能性があることを示すいくつかの例が含まれています。
いくつかの変数は、機器が OEM かどうか、機器が Dell などのエンド カスタマーに販売するメーカーから購入されたか、再販業者に機器を販売するメーカーから購入されたか、再販業者が機器を構成したか、または機器が購入した部品。
これらの結果は、いくつかの異なる 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",
たとえば、シリアル番号情報が欠落している POS 端末からのものです。その意図は、再販業者、ディーラー、または他のベンダーが、基本的に端末のラベルを変更するために、他の情報とともに独自のシリアル番号を提供することであると思われます。
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
情報が WMI に公開されていない可能性があります。これは、wbemtest.exe (またはインストールされている場合は WMI CIM Studio) を使用して簡単に確認できます。私の現在のコンピューターでは、Win32_BaseBoard.SerialNumber は null ではなく、空の文字列です。この場合、この情報を取得する別の方法を見つける必要があります。
同様の問題がありました。このクエリを試して、うまくいくかどうかを確認してください。select UUID from Win32_ComputerSystemProduct