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

发布于 2024-10-17 17:15:36 字数 125 浏览 1 评论 0原文

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

I want to retrieve motherboard ID from a C++ program on Linux (Ubuntu) without root privileges. I know that dmidecode can do this, but it requires root privileges, so it is not suitable for my needs. Does anyone know of non-root alternatives? Source code will be much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

负佳期 2024-10-24 17:15:36

您不必是 root 才能获取信息,但您确实需要首先获得 root 授予您权限。显然 root 可以安全地访问他们的机器,这包括访问硬件身份信息。

root 控制其计算机上的软件可以执行的操作,但您的软件不会限制 root 可以执行的操作。 (Linux 推论 软件许可第一定律

如果 root 选择安装硬件 id 收集器,则将这些数据提供给非 root 用户相对简单(但对于 root 用户来说也相对容易) root 修改你的 id 收集器来撒谎)。

You don't have to be root to get the information, but you do need to have root first give you permission. Obviously root is allowed to secure access to their machine, and this includes access to hardware identity information.

root controls what the software on their machine can do, your software does not restrict what root can do. (Linux Corollary to The #1 Law of Software Licensing)

If root chooses to install your hardware id collector, it's relatively straightforward to make that data available to non-root users (but it's also relatively easy for root to modify your id collector to lie).

◇流星雨 2024-10-24 17:15:36
$ lshal | grep 'system\.hardware\.serial'
  system.hardware.serial = '<serial-number>'  (string)

在 FC11 上以非 root 用户身份工作。

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

Works as non-root user on FC11.

天涯沦落人 2024-10-24 17:15:36

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

lshw should get the serial for you. It will tell you it should be run as superuser but will run anyway. (tested on ubuntu)

木格 2024-10-24 17:15:36
sudo dmidecode --type baseboard
sudo dmidecode --type baseboard
等待我真够勒 2024-10-24 17:15:36

我认为你需要 root

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

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

安德鲁

I think you need to be root

opening up /proc/pci will give you alot of information chipset etc, not sure if /proc/ has a specific directory for motherboard or BIOS info, have a look ls /proc ?

Other than that you could look at calling the dmidecode commandline tool from your application and capturing its output. If thats not good enough, perhaps even look at the source code of dmidecode to see how it works?

Andrew

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文