65.9K
CodeProject 正在变化。 阅读更多。
Home

指纹类

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.43/5 (22投票s)

2007年4月23日

CPOL

2分钟阅读

viewsIcon

138972

downloadIcon

6788

获取唯一的指纹/机器 ID,可用于许可目的。

Screenshot - FingerPrint.gif

引言

对于我当前的项目,我正在寻找一种从运行计算机的硬件生成唯一机器 ID 的方法,以便我可以将其用于许可目的。

我到处寻找,但找不到任何关于如何做到这一点的信息。我确实找到了一些看起来不错的第三方控件。 其中之一是TheScarms AppSentinel组件(http://www.thescarms.com/AppSentinel/default.aspx),但不幸的是,它是用VB6编写的,需要分发VB6运行时文件。 我不想这样做。 另一个是 Ionworx 的机器 ID 组件(http://www.ionworx.com/machineid.html)。 看起来不错,所以我购买了该控件。 但是,由于许多复杂情况,直到两周后我才从 Ionworx 获得许可证密钥。

那么,一个人在这期间该怎么办呢? 我继续在网上搜索,但收效甚微。 直到我偶然发现另一个论坛中的一个页面。 一个名叫 Brian Hawley 的人做了一段非常精彩的代码。 这正是我想要的 - 而且太好了,不容错过。

我不能将功劳归于这个想法本身 - 所有功劳都归功于 Brian。 但是,我确实将代码从 C#.NET 转换为 VB.NET (2005 - Framework 2.0),并且我添加了一些额外的功能。 我希望 Brian 不介意,因为该代码太好了,不应该与他人分享。

该代码所做的是从计算机的 CPU、BIOS、硬盘、主板、视频卡和网络适配器获取 ID。 它将所有内容混合在一起并生成一个 ID。

我添加了选择测试中应包含哪些部分的选项。 您可以使用所有部分,但我强烈建议跳过 CPU ID,因为它需要很长时间。

我还添加了选择结果应包含的字符数的选项。 超过 8 个实际上没有必要,因为该数字通常不会超过该长度,但您可能想要编写自己的例程来利用数据并从其他算法生成机器 ID。

背景

如果您有兴趣,原始 C# 代码 在此 (6.64 KB),并且可以在 此处 (18.2 KB) 找到 C# 演示程序。

由我完成的直接翻译成 VB.NET 的版本可以在此处 (13.7 KB)找到。 它与上面的 C# 代码相同。

当然,增强的代码和 VB 演示程序可以从顶部的链接下载。

使用代码

您只需实例化该类并设置所需的属性。 然后,您查询 Value 属性 - 就这样!

Private fp As JCS.FingerPrint = New JCS.FingerPrint

fp.UseCpuID = False
fp.UseBiosID = True
fp.UseBaseID = True
fp.UseDiskID = True
fp.UseVideoID = True
fp.UseMacID = True

fp.ReturnLength = 8

MsgBox("Finger Print is: " & fp.Value)
© . All rights reserved.