Как получить уникальные идентификаторы материнской платы и процессора в Mono под Linux? - PullRequest
0 голосов
/ 15 сентября 2009

Как получить уникальные идентификаторы материнской платы и процессора в Mono под Linux?

Примечание. Пространство имен .Net System.Management не имеет аналога в Mono

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

Типичный подход из командной строки - использовать dmidecode или lshw, которые читают область BIOS DMI и анализируют серийные номера. Однако это не будет работать, если ваше приложение не запускается от имени пользователя root, так как оно должно иметь возможность читать /dev/mem.

Вы можете получить часть этой информации через HAL. Я не совсем уверен, как сделать это напрямую через HAL, но вы можете сделать это с помощью команды lshal. Под одним из показанных устройств вы должны увидеть запись для «system.hardware.serial» и «system.hardware.uuid» - это серийный номер материнской платы и UUID.

Вы можете запросить HAL из Bash следующим образом:

PC=`hal-find-by-property --key info.product --string Computer`
PC_UUID=`hal-get-property --udi $PC --key system.hardware.uuid`
PC_SERIAL=`hal-get-property --udi $PC --key system.hardware.serial`

На старых машинах вместо этих ключей могут быть "smbios.system.uuid" и "smbios.system.serial". Кроме того, имейте в виду, что эта информация может существовать не на всех машинах или может быть ложной. У меня есть по крайней мере одна материнская плата с UUID, состоящим полностью из 1, а другая с серийным номером процессора, который почти полностью равен нулю.

1 голос
/ 15 сентября 2009

Я вижу два возможных пути:

  • Запустите консольную программу uname / motherboard info в вашем коде, используя ProcessStartInfo.RedirectStandardInput (и output / error) для анализа вывода
  • Доступ к соответствующим C-функциям с помощью директивы DllImport (если uname -a недостаточно хорош). Не забудьте настроить LD_LIBRARY_PATH соответствующим образом, чтобы найти общую библиотеку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...