如何从C ++程序获取Linux上的主板ID

我想在没有root权限的情况下从Linux(Ubuntu)上的C ++程序中检索主板ID。 我知道dmidecode可以做到这一点,但它需要root权限,所以它不适合我的需要。 有谁知道非根替代? 源代码将不胜感激。

Solutions Collecting From Web of "如何从C ++程序获取Linux上的主板ID"

您不必为了获取信息而需要root,但是您需要先拥有root权限才能获得权限。 很明显,root可以保护对他们机器的访问,这包括访问硬件身份信息。

根控制他们的机器上的软件可以做什么,你的软件不限制根可以做什么。 (Linux 软件许可排名第一的推论)

如果root用户选择安装你的硬件ID收集器,那么把这些数据提供给非root用户是比较简单的(但是对于root来说,修改你的id收集器也是相对容易的)。

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

在FC11上以非root用户身份运行。

lshw应该为你获得序列号。 它会告诉你,它应该以超级用户身份运行,但无论如何将运行。 (在Ubuntu上测试)

我认为你需要成为根

打开/ proc / pci会给你很多的信息芯片组等,不知道/ proc /有一个特定的主板或BIOS信息的目录,看看ls / proc?

除此之外,您可以从应用程序中调用dmidecode命令行工具并捕获其输出。 如果这还不够好,甚至可以看看dmidecode的源代码,看看它是如何工作的?

安德鲁

 sudo dmidecode --type baseboard