Я использую WMI в классах C ++, чтобы получить серийный номер моей материнской платы.
Запрос следующий:
"SELECT SerialNumber FROM Win32_BaseBoard"
Я написал запрос сам, так что я не уверен, что он правильный, но он что-то возвращает:
/9637CW1/CN1296131Q0BA8/
, Возвращенная строка имеет одинаковый формат на нескольких компьютерах, поэтому я предполагаю, что запрос правильный.
Мой вопрос: действительно ли я запрашиваю серийный номер материнской платы Вот ? Потому что я видел другой класс под названием "Win32_MotherboardDevice"
(который не имеет свойства «серийный номер»). Было бы хорошей идеей использовать это как идентификатор компьютера? В настоящее время я использую серийный номер жесткого диска, но я подумал, что лучше использовать серийный номер более надежного компонента, такого как материнская плата, так как диск с большей вероятностью будет заменен, чем материнская плата.
Спасибо 🙂
Я обнаружил, что получение серийного номера материнской платы может привести к очень разным результатам в зависимости от производителя и канала распространения. Некоторые производители, которые продают конечному потребителю и имеют хорошие процессы поддержки при ремонте оборудования, будут последовательны в настройке информации о серийном номере для WMI. Другие производители, поставляющие оборудование типа OEM, будут зависеть от производителя, который установит серийный номер.
Поскольку серийный номер находится в определенном домене или пространстве имен в зависимости от производителя, возможно, хотя и маловероятно, что разные производители могли использовать один и тот же серийный номер, поэтому вам действительно нужно знать как производителя, так и серийный номер.
Некоторые терминалы в точках продаж согласуются с серийным номером, и часть процедуры замены материнской платы в случае неисправной материнской платы состоит в том, чтобы установить серийный номер заменяющей платы на серийный номер заменяемой платы. Это подразумевает, что у кого-то может быть один и тот же серийный номер для нескольких единиц оборудования, подобный подделке MAC сетевой карты LAN.
Запрос WMI будет иметь значение для предоставленного серийного номера. В дополнение к серийному номеру также есть свойство тега актива.
Глядя на документацию для Win32_MotherboardDevice
и, попробовав несколько свойств, кажется, что там не так много полезных данных, конечно, нет ничего похожего на уникальный серийный номер.
На ноутбуке Dell С Windows XP, когда я запускаю приложение C ++, которое использует WMI, чтобы увидеть результаты нескольких разных Select
WMI запрашивает несколько различных свойств, я получаю следующие результаты:
Connected to ROOT\CIMV2 WMI namespace
Query for SELECT * FROM Win32_SystemEnclosure
SMBIOS SerialNumber: 49495G1
SMBIOS Name: System Enclosure
SMBIOS SMBIOSAssetTag:
SMBIOS Manufacturer: Dell Inc.
Query for SELECT * FROM Win32_BaseBoard
SMBIOS SerialNumber: .49495G1.CN486438441035.
SMBIOS Product: 0UY141
SMBIOS Name: Base Board
SMBIOS Manufacturer: Dell Inc.
Query for SELECT * FROM Win32_BIOS
SMBIOS SerialNumber: 49495G1
SMBIOS Name: Phoenix ROM BIOS PLUS Version 1.10 A10
SMBIOS Manufacturer: Dell Inc.
Query for SELECT * FROM Win32_ComputerSystem
SMBIOS Name: CIT-31204E1FF03
SMBIOS Manufacturer: Dell Inc.
Query for SELECT * FROM Win32_ComputerSystemProduct
SMBIOS Name: Latitude D830
SMBIOS IdentifyingNumber: 49495G1
SMBIOS UUID: 4C4C4544-0039-3410-8039-B4C04F354731
Глядя на нижнюю часть этого ноутбука, я вижу наклейку со штрих-кодом и надписью «SERVICE TAG 49495G1», поэтому для этого ноутбука извлеченный серийный номер является идентификатором метки обслуживания. Я могу зайти на сайт Dell и посмотреть этот тег обслуживания в зоне поддержки.
Новый терминал торговой точки, предназначенный для перепродажи с версией POS Ready 7 для Windows, обеспечивает следующий вывод с тем же приложением C ++ WMI. Это похоже на вывод с компьютера, который я сам изготовил из приобретенных деталей, у которых также не было серийных номеров. Этот компьютер работает под управлением Windows 8.1.
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