Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次获取唯一的硬件ID时都会发生更改_C#_.net_Uuid - Fatal编程技术网

C# 每次获取唯一的硬件ID时都会发生更改

C# 每次获取唯一的硬件ID时都会发生更改,c#,.net,uuid,C#,.net,Uuid,我想制作一个程序并出售它,所以我想制作某种许可证制度。我在谷歌上发现的是: 我在Ubuntu的VirtualBox中运行32位Windows7。我得到了相同的UID,但是当我重新启动Windows时,我得到了一个新的UID。我只是在想,有些人会购买我的程序,他们可能会从VirtualBox运行它,所以这将是一个问题 你们有什么建议吗 即使这是一种更简单的方法,但即使我重新启动VBox,它也不会改变。你不必在整个DRM过程中陷入困境,总有更聪明的人在那里,有人会想出如何绕过它 如果你真的担心: 设

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

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

你们有什么建议吗


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

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

如果你真的担心:

设置联机许可证服务器以保存用户许可证 在用户输入有效许可证之前,禁止应用程序执行任何操作 您的服务将通过互联网验证此许可证 您可以通过这种方式限制使用您的服务的活动应用程序的数量
想一想iTunes如何允许您授权最多5台计算机访问您的媒体库。

即使过了很长时间,我还是想为这个问题添加一个可能的解决方案,指出我在尝试生成带有该代码的指纹时遇到的一些问题,并面临同样的问题

identifier函数仅检索每个wmiClass的wmiProperty的第一个非空值。您应该注意的第一件重要事情是:为每个wmiClass返回的内容可能不属于同一个ManagementObject。因此,如果某个对象更改为非第一个对象,这也可能会影响您的指纹

请注意,将Win32_DiskDrive用作wmiClass是危险的,因为插入USB设备通常会导致该设备被识别为第一个设备而不是硬盘,从而在插入或拔出设备时更改指纹。即使没有发生这种情况,如果主驱动器为空,仍然可以从USB设备中获取一个wmiProperty,例如磁盘签名,这发生在我身上


一个可能的解决方案是通过检查InterfaceType排除所有USB设备,并排除所有与USB匹配的设备,或者至少我是这么做的。

即使每次id都相同,他们也可以克隆虚拟机并在数千个地方使用您的程序。第一条规则:不要重新发明轮子。其他人已经做了,可能更好:不明白,为什么我得到-3?你可能被否决了,因为这不是一个具体的编码问题。嗯,事实上。我将有一个服务器上的数据库。带有电子邮件、密码、uid。一旦他们用paypal购买了这个程序,我会用一些随机密码将这封电子邮件输入我的数据库。当他们第一次打开程序时,程序应该获取UID,并将其放入数据库的UID列中。当他们再次运行它时,它只会检查它是否相同。@user205154然后按此路线,创建硬件ID是不可以的,如果他们更改了一块硬件,如处理器或图形卡,该怎么办?你冒着你的软件把他们锁在外面的风险。你是对的。。。但是我应该如何生成UID呢?这个项目不是什么大项目,它实际上是我第一个批量销售的项目。你认为我只要用电脑的名字就可以了吗?我知道。。。这很容易打破。但我希望能暂时避免产品泄漏…@user205154我不建议为每台机器创建任何ID,如果您选择了多台用户可以同时安装并拥有的机器,那么您的软件可以在这些机器上激活和停用,并且只需增加或减少数据库中使用的机器数量,这样您就可以控制它们安装在多少台机器上,而无需任何复杂的可绕过逻辑。那么,这只是一个简单的软件tbh。它实际上是一个交互式培训师,用于大型软件。您认为当用户通过程序登录时,在MyDB中实际上没有uid列,而是活动列是明智的决定吗。当用户被授权时,它将在活动列中输入1。当它完全关闭程序时,它将放入0。所以它一次只能运行一台计算机,比如说。。。这就是许可证制度