WMI дает мне неполную информацию об оборудовании (PhysicalMemory)

Я уже читал почти точно такой же вопрос по этой проблеме (WMI-оборудование, получить информацию об оперативной памяти), и здесь я надеюсь получить дополнительную информацию по этой теме.

Мне нужно получить различную информацию об оборудовании, такую ​​как серийный номер ОЗУ, серийный номер жесткого диска, серийный номер процессора и т. Д. Я использую Visual C ++ 2010 и использую WMI для запроса информации, но это не дает мне того, что я хочу. Например, я начал пытаться получить серийный номер RAM и после запроса (я использовал Win32_PhysicalMemory, затем получил свойство "SerialNumber"), я получил

SerialNumber
SerNum0
SerNum1

что явно не так. Я также перешел для этого в командную строку (wmic memorychip получает серийный номер), но получаю то же самое. Но я знаю, что серийный номер там есть; когда я использую стороннюю программу CPU-Z, она безупречно извлекает серийные номера RAM.

Я запрашиваю не тот класс? Что мне не хватает? Я пробовал исполняемый файл, который я сделал, на нескольких других компьютерах, со смешанными результатами, успешными и неудачными, но CPU-Z никогда не дает сбоев.

Я разрабатываю в Visual Studio C ++ 2010 на 64-разрядном компьютере с Windows 7. Спасибо.


person Sophia    schedule 27.05.2014    source источник
comment
CPU-Z может не использовать WMI, использовать сборку или что-то еще.   -  person Jerry YY Rain    schedule 27.05.2014
comment
Я понимаю, что CPU-Z использует другой метод для получения информации об оборудовании. Кто-то упомянул, что использование библиотек CPU-Z скрепит сделку, но проблема в том, что я очень новичок и не могу / не смогу сделать это самостоятельно без полной документации и большого количества примеров кода ...   -  person Sophia    schedule 27.05.2014
comment
Эти свойства должны быть предоставлены драйвером для материнской платы. В наши дни это очень сложно, жесткая конкуренция в этом сегменте рынка не оставляет места для вкусностей. И на самом деле это никого не волнует.   -  person Hans Passant    schedule 27.05.2014


Ответы (1)


WMI получает данные с помощью поставщиков WMI, к сожалению, некоторые производители не предоставляют такие данные этим поставщикам, так что вам здесь не повезло. Если вам нужен надежный метод получения некоторой информации о памяти, такой как серийные номера, производитель и т. Д., Вы можете использовать обнаружение последовательного присутствия (SPD), как это делает CPU-Z. Вы можете получить всю документацию, относящуюся к SPD, на сайте jedec.

person RRUZ    schedule 27.05.2014
comment
Насколько сложно будет использовать СПД? Мне просто любопытно, и я прошу дать ссылку. Что касается моей собственной проблемы, я вместо этого решил получить только емкость RAM / HD и имя процессора (3 атрибута из которых, скорее всего, действительно присутствуют ЗДЕСЬ в WMI) - person Sophia; 28.05.2014
comment
Доступ к такой информации требует некоторых навыков программирования на низком уровне, поэтому сложность зависит от вашего опыта программирования, есть некоторые SDK для легкого чтения информации SDP, или вы можете получить доступ к такой информации через шину i2c. - person RRUZ; 28.05.2014