簡體   English   中英

如何從C ++程序獲取Linux上的主板ID

[英]How to get motherboard ID on Linux from a C++ program

我想在沒有root權限的情況下從Linux(Ubuntu)上的C ++程序中檢索主板ID。 我知道dmidecode可以做到這一點,但它需要root權限,所以它不適合我的需要。 有沒有人知道非根替代品? 源代碼將非常感謝。

您不必是root用戶來獲取信息,但您需要讓root用戶首先授予您權限。 顯然root允許安全訪問他們的機器,這包括訪問硬件身份信息。

root控制他們機器上的軟件可以做什么,你的軟件不限制root可以做什么。 軟件許可#1法的 Linux推論)

如果root選擇安裝你的硬件id收集器,那么將這些數據提供給非root用戶是相對簡單的(但root也可以相對容易地修改你的id收集器)。

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

在FC11上以非root用戶身份運行。

sudo dmidecode --type baseboard

lshw應該為你獲取序列號。 它會告訴你它應該以超級用戶身份運行,但無論如何都會運行。 (在ubuntu上測試)

我想你需要扎根

打開/ proc / pci會給你很多信息芯片組等,不確定/ proc /是否有一個特定的主板或BIOS信息目錄,看看ls / proc?

除此之外,您可以查看從應用程序調用dmidecode命令行工具並捕獲其輸出。 如果這還不夠好,甚至可以查看dmidecode的源代碼,看它是如何工作的?

安德魯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM