【发布时间】:2011-11-18 10:31:39
【问题描述】:
我想在 C 中唯一标识一台机器。
以下是具有序列号的来源,但不能保证它们是唯一的或存在的(如可移动硬盘或网卡)。
- CPU:我正在使用
cpuid指令,但是,除了 Pentium 3 之外的任何处理器都没有实现序列号,即不相关。我可以使用处理器签名,但这对于每个处理器来说并不是唯一的。 - 硬盘:?
- BIOS:?
- 主板:?
- MAC 地址:通过系统函数调用。
对于所有的问号,我如何获得 C 中的序列号? 如果您回答系统相关的解决方案,请同时提供 Windows/*nix。 另外,对于 Windows,请不要使用 WMI。
谢谢!
【问题讨论】:
-
您想监视您的程序的用户?
-
拥有序列号如何暗示间谍活动?
-
仅仅是因为您可以追踪个人行为。想象一下,您在 Web 浏览器中实现了这一点。然后,这可以用于跟踪从特定机器使用该浏览器进行的所有 Web 访问,无论它以哪种 Web 身份呈现。因此,这很容易被滥用于侵犯隐私权。
-
啊,这就是你犯错误的地方。此代码是客户端可执行文件。不需要序列号,如果这是它的目的,程序本身可以通过键盘记录跟踪所有计算机的使用情况。
-
不,我不认为我犯了“错误”。我很清楚cookies的概念。 Cookies(至少原则上)可以被用户删除,礼貌的软件会询问我们是否允许他们存储一个。将 cpuid 用于此类事情是恶意的,因为我不能轻易更改我的 cpuid,因为我可以删除 cookie。
标签: c windows linux identification