如何使用 C++ 获取硬件的唯一标识符 [关闭]

Posted

技术标签:

【中文标题】如何使用 C++ 获取硬件的唯一标识符 [关闭]【英文标题】:how to grab unique identifiers for hardware using C++ [closed] 【发布时间】:2020-06-29 08:47:56 【问题描述】:

我似乎找不到任何可以获取唯一标识符的代码,例如卷 id、cpu id 和主板,例如 c# 中的 id。它们都过于复杂,我想要一个简单的抓取和分配。我希望能够在获取唯一标识符后将其分配给字符串。

【问题讨论】:

如果你想在 C# 中使用它,为什么要标记 C++? 他不想在 C# 中使用它。 这能回答你的问题吗? CPUID implementations in C++ 不,它没有。这只是告诉我拥有我的 cpu 的公司是什么。我要真实身份证。就像我说的。唯一标识符。 一些用户不喜欢随机应用程序抓取唯一标识信息,因此这些信息可能无法获取。 【参考方案1】:

如何使用 C++ 获取硬件的唯一标识符

C++ 中不存在硬件标识符。

通过阅读 C++11 标准 n3337 进行检查,并查看 this C++ reference 和更高版本的 C++ 标准。

某些操作系统允许访问硬件信息。这是特定于操作系统的。对于 Linux,请参阅 proc(5) 和 hwinfo。

您的合法用户可以在某些virtual machine 或某些虚拟机管理程序上运行您的软件。例如,我可以在 Linux 上运行的Qemu(或Xen)上运行 Windows。想一想,然后定义“硬件信息”在这种情况下可能意味着什么。

我似乎找不到任何获取唯一标识符的代码

这是意料之中的,因为它们没有,而且很容易被欺骗。

顺便说一句,PC 电脑可以双启动,同一台机器早上运行Debian Linux,下午运行 Windows,晚上运行 FreeBSD。

PS。对于软件保护,您最好花钱请一位优秀的律师,而不是试图寻找技术上的“伪解决方案”。

【讨论】:

不确定 C++11 与此处的相关性。当前所有编译器实现的版本都是C++17。 我只是不知道定义所有 C++17 的单个 PDF URL。请告诉我一个 再次,我看到许多代码获取 CPU id 和卷序列号。就像在 C# 中一样,但太复杂并导致我出现多个错误。我不在乎它是否容易被欺骗或你怎么想。我正在寻找简单的东西。还是谢谢 但是这样的代码是特定于操作系统的,并且在 same 硬件上运行的 Linux 或 Windows 上肯定是不同的 @BasileStarynkevitch 你可以参考timsong-cpp.github.io/cppwp/n4659 [PDF]。

以上是关于如何使用 C++ 获取硬件的唯一标识符 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Android唯一标识

Android获取唯一标识符的实现

Android获取唯一标识符的实现

如何在 iphone 中获取 Beacon 的唯一标识符

js如何生成唯一标识符UUID

windows和Linux获取系统和硬件编号ID作为唯一标识