Delphi: ошибки при получении серийного номера материнской платы - PullRequest
0 голосов
/ 30 июля 2011

Есть 2 хороших примера, как получить серийный номер: Как получить идентификатор материнской платы или серийный номер в Delphi?

Все они у меня работают (Windows 7). Но для 2 человек это не так!

Опция 1 (библиотека Microsoft WMIScripting) возвращает ошибку, которая не может быть обработана в исключении! (Я пытался использовать мой код в исключении, но он не был выполнен). ОС Windows 7:

enter image description here

Опция 2 (Windows XP) - ничего не возвращает: нет ошибок, нет серийного номера.

Кто-нибудь может объяснить, почему это так и есть ли рабочий код для этого?

В этой ссылке есть комментарий: "@PRUZ И вы знаете что-нибудь о моем втором комментарии? Что я проверяю тот же код на другом компьютере, который возвращает 'нет'. Что с ним? - Химадри"

Спасибо !!!

1 Ответ

4 голосов
/ 30 июля 2011

@ maxfax, первый пример кода не работает в Windows XP, потому что использует свойство ItemIndex, которое доступно начиная с Windows Vista, для получения более подробной информации смотрите статью (Be careful when you import the Microsoft WMIScripting Library) . второй фрагмент должен работать нормально в любой системе Windows, потому что получить доступ к свойствам WMI, используя имя свойства напрямую. Теперь, если второй вариант не получает серийный номер на каком-либо компьютере, это просто потому, что поставщик WMI не предоставляет информацию для этого свойства. в качестве примечания некоторые виртуальные машины, такие как VMWARE, сообщают None как серийный номер.

Обновление

Я только что написал статью в своем блоге о том, как читать SMBios (Reading the SMBios Tables using Delphi), используя этот метод, вы получаете серийный номер материнской платы непосредственно из таблиц SMBios.

...