【发布时间】:2011-06-26 11:54:45
【问题描述】:
我想在没有 root 权限的情况下从 Linux (Ubuntu) 上的 C++ 程序检索主板 ID。我知道dmidecode可以做到这一点,但是它需要root权限,所以不适合我的需要。有谁知道非根替代品?源代码将不胜感激。
【问题讨论】:
-
为什么非 root 用户可以访问这些信息?出于什么目的?另外,在 VMWare 或 VirtualBox 中运行的虚拟机的主板 ID 是什么?
-
您可以从
/sys/class/dmi/id/board_serial获得有关最新内核的信息,您猜对了……应该只有root才能读取。 -
@Juliano 这是出于许可目的,以避免未经授权使用主应用程序。这个许可应用程序应该悄悄地收集主板序列号并检查它是否与注册的序列号匹配。当然,Linux用户可能不是root
-
这种“许可”形式被严重破坏了。 StackOverflow 上有很多关于这个的问题,搜索它。例如,您可能发明的任何试图保护未经授权的副本的方法都只会以以下任一方式结束: 1. 破坏您的应用程序的 LD_PRELOAD 技巧;或 2. 您的应用程序分布在具有单一、恒定环境的虚拟机中。
-
@Alexey:您可能已经“致力于”做不可行的事情。重新考虑这一承诺可能是个好主意。如果您认为需要基于硬件签名的许可,您可以使用其他信息,例如网络适配器的 MAC 地址或其他信息。
标签: c++ linux serial-number motherboard