CodeForge QQ客服 CodeForge 400电话 客服电话 4006316121
首页 » 源代码 » 探寻可靠的硬件 ID

探寻可靠的硬件 ID

maninwest
发布于2015-02-25 14:18:42
源码作者
浏览次数:
下载次数:1
下载所需积分:1 
源码分类 Tags:
源码分类 所属分类:
Driver Development驱动 CPlusPlus, C-C++C++

分享有礼! 》

  • 请点击右侧的分享按钮,把本代码分享到各社交媒体。
  • 通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
  • 通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。

代码介绍

翻译 maninwest@Codeforge 作者:Michael N Haephrati (האפרתי)@CodeProject
很多桌面应用开发员需要唯一识别出运行软件的计算机。这种身份识别必须能生成唯一的数据元素,每台计算机各不相同,并在同一台给定计算机上可重现相同的 ID。
 WMI 的类
Windows 提供了一组可以用于硬件枚举和身份识别任务的类,称为 WMI ( Windows Management Instrumentation), 是 Windows Driver Model (WDM) 的扩展。
WMI 根据安装组件提供静态信息和更改的动态信息,可以在服务器上或者计算机使用多数编程语言进行本地和远程管理,枚举安装的组件并提醒发生的更改。
我通过研究总结出,如果重视速度和可靠性的话,最好通过  Win32 API 访问硬件而不使用 WMI。我遇到了很多延迟,且在某些情况下, WMI 不能检测出 CPU ID 等元素。
这里着重介绍不使用WMI 获取此数据的直接方法。
获得唯一的 CPU ID

似乎最好的方法是取样 CPU 唯一识别号 (或者CPU ID)。但是,这种选择有几个问题,让依赖读取 CPU ID 几乎不可能实现。
首先,除了旧的奔腾 III,大多数 CPU 都没有唯一的  CPU  序列号。Intel 已经处于安全考虑移除了此功能。
整个主板仍可以生成一个 ID ,这本是可以实现的,但是由于主板的类型很多制造商很多,让生成一个覆盖所有的唯一 ID 基本上不可能。
一家名为 CPU ID 的法国公司在此方面做了很多研究,他们花费了很多资源来获得每个主板和 CPU 的类型,以便能囊括所有主板和 CPU。
以下截图显示了每个计算机可以收集的信息的详情。


他们的 SDK 可以下载,可以作为静态库或 DLL 使用。但是坏消息是,即使是 CPUID 的人也说基于特定计算机的 CPU 或主板生成唯一硬件 ID 是不可能。
基于 MAC 地址的硬件 ID
获取唯一ID 的另一个选择是取样 MAC 地址。 首先"MAC 地址"是什么?它表示媒介访问控制。 MAC 地址是 48 位长度 (6 bytes). GetMACAddresscode 例子解释了如何获取 MAC 地址
但是,此方法也有个问题:  MAC 地址可以轻松更改成新的地址..
硬盘序列号
似乎,唯一可靠的方案就是使用主硬盘的序列号。第二个例子GetHDSerialNumber展示了如何获取这个ID.

Sponsored links

源码文件列表

温馨提示: 点击源码文件名可预览文件内容哦 ^_^
...
名称 大小 修改日期
GetMacAddress_by_Michael_Haephrati.sln969.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.cpp2.77 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.h673.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.rc11.32 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.vcxproj6.41 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.vcxproj.filters2.37 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_Haephrati.vcxproj.user143.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_HaephratiDlg.cpp5.78 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\GetMacAddress_by_Michael_HaephratiDlg.h816.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\HardDriveSerialNumer.cpp23.45 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\HardDriveSerialNumer.h8.97 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\ReadMe.txt5.05 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\resource.h1.41 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\stdafx.cpp236.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\stdafx.h1.76 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\targetver.h314.00 B2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\res\GetMacAddress_by_Michael_Haephrati.ico66.19 kB2015-01-28 12:30
GetMacAddress_by_Michael_Haephrati\res\GetMacAddress_by_Michael_Haephrati.rc2852.00 B2015-01-28 12:30
程序员商城

资源评论

(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
  • 1
  • 第1页
  • 共1页

探寻可靠的硬件 ID (78.04 kB)

需要 1 积分
您持有 积分

CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了 了解更多

您的积分不足,优惠套餐快速获取 30 积分

订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。

更多付款方式:网银PayPal

上传代码,免费获取CodeForge积分

您本次下载所消耗的积分将转交上传作者。

同一源码,30天内重复下载,只扣除一次积分。

登录 CodeForge

还没有CodeForge账号? 立即注册
关注微博
联系客服

Switch to the English version?

Yes
CodeForge 英文版
No
CodeForge 中文版

完善个人资料,获价值¥30元积分奖励!

^_^"呃 ...

Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧
好的