Как получить ID материнской платы на Linux из программы на C++

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

5 ответов

$ lshal | grep 'system\.hardware\.serial'
  system.hardware.serial = '<serial-number>'  (string)

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

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

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

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

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

sudo dmidecode --type baseboard

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

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

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

Эндрю

Другие вопросы по тегам