指纹类
获取唯一的指纹/机器 ID,可用于许可目的。
引言
对于我当前的项目,我正在寻找一种从运行计算机的硬件生成唯一机器 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)