cha*_*m15 11 c linux windows identification
我想在C中唯一地识别一台机器.
以下是具有序列号的源,但不保证它们是唯一的或存在的(如可移动HDD或网卡).
cpuid
指令,但是,除Pentium 3之外的任何处理器都没有实现序列号,即不相关.我可以使用处理器签名,但这对于每个处理器都不是唯一的.对于所有问号,我如何获得C中的序列号?如果您使用系统相关解决方案回答,请同时提供Windows/*nix.此外,对于Windows,请不要WMI.
谢谢!
一般来说,您需要识别组件的组合,并了解组件可以并且将会随着时间的推移而发生变化。您需要容差算法来做出明智的猜测,以了解更改何时代表您之前识别的机器的更新或您以前未见过的新机器。
一种简单的方法是,当您需要确定正在处理的机器并与您之前见过的机器的快照进行比较时,枚举您列出的所有组件。如果任何序列号匹配,您可以非常安全地假设您正在处理同一台机器(尽管当然有可能有人将硬盘驱动器转移到新机器......但是,这就是简单的商业等级启发法要复杂得多。)。
使用这种专门用于软件激活的方法受到积极执行的专利的保护,因此请小心您所做的事情。如果您确实想这样做来保护您的软件,那么最好使用商业解决方案。有些是相当实惠的。谷歌“软件激活”选项。
以下是一些获取特定系统信息的参考资料(并非所有都是特定的 C 食谱,但每种情况都可以使用 C)。
硬盘 Windows http://www.codeproject.com/KB/cs/hard_disk_serialno.aspx
硬盘 Linux http://www.webmasterworld.com/forum40/957.htm
BIOS Windows http://msdn.microsoft.com/en-us/library/aa394077(v=vs.85).aspx
BIOS Linux http://www.dufault.info/blog/a-better-way-to-find-your-bios-version-in-linux/
MAC 地址 Windows C++:获取 Vista 上网络适配器的 MAC 地址?
MAC 地址 Linux http://www.linuxquestions.org/questions/programming-9/linux-确定-mac-address-from-c-38217/
归档时间: |
|
查看次数: |
2803 次 |
最近记录: |