Как получить идентификатор материнской платы на Linux из программы на C ++ - PullRequest
3 голосов
/ 13 февраля 2011

Я хочу получить идентификатор материнской платы из программы на C ++ в Linux (Ubuntu) без прав root. Я знаю, что dmidecode может сделать это, но для этого требуются права root, поэтому он не подходит для моих нужд. Кто-нибудь знает альтернативы без полномочий root? Исходный код будет высоко ценится.

Ответы [ 5 ]

3 голосов
/ 29 августа 2011
$ lshal | grep 'system\.hardware\.serial'
  system.hardware.serial = '<serial-number>'  (string)

Работает как пользователь без полномочий root на FC11.

3 голосов
/ 13 февраля 2011

Вам не нужно быть пользователем root, чтобы получить информацию, но сначала вам нужно иметь разрешение root.Очевидно, что root имеет право защищать доступ к своей машине, и это включает в себя доступ к информации об идентификаторе оборудования.

root контролирует, что может делать программное обеспечение на их машине, ваше программное обеспечение не ограничивает возможности root.(Следствие Linux к Закон № 1 о лицензировании программного обеспечения )

Если root решит установить аппаратный сборщик идентификаторов, сделать эти данные доступными для пользователей без полномочий root довольно просто (но этотакже относительно легко для root изменить ваш коллектор id, чтобы лгать).

2 голосов
/ 29 мая 2015
sudo dmidecode --type baseboard
2 голосов
/ 14 февраля 2011

lshw должен получить сериал для вас. Он скажет вам, что он должен быть запущен от имени суперпользователя, но все равно будет работать. (проверено на Ubuntu)

0 голосов
/ 13 февраля 2011

Я думаю, что вы должны быть root

Открытие / proc / pci предоставит вам множество информационных чипсетов и т. Д., Но вы не уверены, что в / proc / есть специальный каталог для информации о материнской плате или BIOS, посмотрите ls / proc?

Кроме этого, вы можете посмотреть на вызов инструмента командной строки dmidecode из вашего приложения и захват его результатов. Если этого недостаточно, возможно, даже посмотрите на исходный код dmidecode, чтобы увидеть, как он работает?

Andrew

...