Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# Windows 10上的唯一编号或guid_C#_.net_Windows_Desktop Application - Fatal编程技术网

C# Windows 10上的唯一编号或guid

C# Windows 10上的唯一编号或guid,c#,.net,windows,desktop-application,C#,.net,Windows,Desktop Application,在我们的Windows desktop.Net应用程序中,我们有一个许可证系统,在该系统中,我们为安装系统的每个mchine付费 到目前为止,我们一直在使用GetCurrentHwProfile中的szHwProfileGuid来确定我们所称的“安装id”。我们使用注册表中的许可证密钥来对抗它,当它匹配时,我们允许用户登录 在Windows10问世之前,它一直运行良好,每更新一次,Windows 10就会改变szHwProfileGuid。这会导致所有许可证密钥无效 是的,我知道这个机制不是防弹

在我们的Windows desktop.Net应用程序中,我们有一个许可证系统,在该系统中,我们为安装系统的每个mchine付费

到目前为止,我们一直在使用
GetCurrentHwProfile
中的
szHwProfileGuid
来确定我们所称的“安装id”。我们使用注册表中的许可证密钥来对抗它,当它匹配时,我们允许用户登录

在Windows10问世之前,它一直运行良好,每更新一次,Windows 10就会改变
szHwProfileGuid
。这会导致所有许可证密钥无效

是的,我知道这个机制不是防弹的,但在我们的情况下,它已经足够好了。我想知道,对于我们来说,用波动性较小的东西替代
szHwProfileGuid
最快的方法是什么

要求

  • 该值应该是全局唯一的(数字、guid或字符串),或者至少应该是“接近唯一的”
  • 该值应该可以从系统中访问,而无需存储
  • 对于某台电脑,该值应永不更改(重新安装Windows或更改硬件时的更改是可接受的,Windows更新时的更改是不可接受的
  • 欺骗号码不是一个问题

我想到了使用mac地址,但也许你们有更好的想法?

在安装时生成一个GUID并使用它?@DavidG,这将要求他们存储它。@juharr是的,这是一个问题为什么?看看。你应该使用一些不太可能更改的内容的散列。CPUId、基板ID,甚至可能还有Windows串行(或Windows密钥)。您可能还希望包含一些东西来标识软件和/或版本,以便软件只进行验证,而不是验证所有内容。然后是确定性GUID——使用这些GUID,您的哈希可能看起来像GUID,而不是哈希结果