每次C#都会获得唯一的硬件ID更改

时间:2013-04-03 13:50:38

标签: c# .net

我想制作一个程序并将其出售,所以我想制作某种许可系统。我在谷歌上发现的是:

http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer

我在Ubuntu的VirtualBox中运行Windows 7(32位)。我得到了相同的UID,但是当我重新启动Windows时,我得到了一个新的UID。我只是想有些人会购买我的程序,他们可能会从VirtualBox运行它,所以这将是一个问题。

你们有什么建议吗?

即使这是一种更简单的方法,但即使重新启动我的VBox也不会改变。

2 个答案:

答案 0 :(得分:0)

你不需要在整个DRM流程中陷入困境,总有更聪明的人在那里,有人会想出如何绕过它。

如果你真的担心:

  1. 设置在线许可服务器以保留用户许可
  2. 在用户输入有效许可证之前,阻止应用程序执行任何操作
    • 此许可证将通过您的服务在互联网上验证
    • 您可以使用您的服务限制“活动”应用程序的数量
  3. 按照iTunes允许您授权最多5台计算机访问媒体库的方式进行思考。

答案 1 :(得分:0)

即使已经花费了很多时间,我也想为这个问题添加一个可能的解决方案,指出我在尝试生成具有该代码的指纹并遇到相同问题时遇到的事情。

identifier函数仅为每个wmiProperty检索 wmiClass的第一个非空值。您应该意识到的第一件事是:每个wmiClass 可能不所返回的内容都属于同一ManagementObject。因此,如果某物变为“不是第一个对象”,则这也可能会影响您的指纹。

请注意,将Win32_DiskDrive用作wmiClass是危险的,因为插入USB设备通常会导致该设备被识别为第一个设备(而不是硬盘驱动器),并随着您的更改指纹插入或拔出设备。即使这种情况没有发生,但如果主驱动器为空(我遇到的磁盘签名是 eg ),则wmiProperty之一仍可以从USB设备中取出。

一种可能的解决方案是通过选中InterfaceType排除所有USB设备,并排除所有与“ USB”匹配的设备,或者至少我是这样做的。