Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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# 特定于计算机的Winforms授权_C#_Winforms_Licensing - Fatal编程技术网

C# 特定于计算机的Winforms授权

C# 特定于计算机的Winforms授权,c#,winforms,licensing,C#,Winforms,Licensing,我正在使用以下工具构建一个小型winforms应用程序:。许可证工作正常,我可以创建许可证并根据自己的选择分发它们 问题是,如何使每个许可证仅在一台机器上工作?我知道在ayende的项目中有一个叫做LicensingService的类,我相信它和我想做的一样,但我就是想不出来。我已经做了很多搜索,除了我自己,我真的找不到任何教程 也许有人已经实现了这一点,或者对我如何实现这一点有一些建议?如果有帮助的话,我确实可以访问Web服务器 一如既往,我们非常感谢您的帮助。我不知道犀牛执照到底是什么。为了

我正在使用以下工具构建一个小型winforms应用程序:。许可证工作正常,我可以创建许可证并根据自己的选择分发它们

问题是,如何使每个许可证仅在一台机器上工作?我知道在ayende的项目中有一个叫做LicensingService的类,我相信它和我想做的一样,但我就是想不出来。我已经做了很多搜索,除了我自己,我真的找不到任何教程

也许有人已经实现了这一点,或者对我如何实现这一点有一些建议?如果有帮助的话,我确实可以访问Web服务器


一如既往,我们非常感谢您的帮助。

我不知道犀牛执照到底是什么。为了满足您的需求,通常有两种方法

  • 为客户端计算机提供一些随机生成的密码,并在服务器中维护一个密码池。每次输入密码以在本地计算机中注册应用程序时,请通过internet连接到您的服务器,检查该应用程序是否已在其他位置注册

  • 或者,我们要做的是,生成一个对该机器唯一的代码(可能是某个唯一机器id的散列,比如mac id),然后让客户端将其发送给您。然后,您可以使用
    一些逻辑重新编译代码并将其发回。现在,当客户机向其机器输入此代码时,执行相同的操作:获取机器id,使用相同的
    某些逻辑执行相同的重新灰化,并检查是否匹配


  • 我想不出其他任何东西了

    这取决于你想让你的用户感到多么烦人。您可以实现一个HWID(请参阅如何生成它们),该HWID在系统之间是唯一的,然后让您的程序检查HWID是否与在线存储它们的位置相匹配(通常使用数据库)

    不用说,这将使您的应用程序需要internet连接才能运行,这可能会让您的用户感到有点沮丧

    或者,您可以将HWID与序列号合并,并让您的应用程序执行相同的操作,以验证它们是否匹配,但这很容易被普通破解程序破解


    归根结底,.net在安全性方面并不是最好的,因为您可以轻松获得源代码并根据需要修改程序集以修补某些保护。在决定采取何种途径保护软件时,请记住这一点。

    谢谢您的回复,这听起来是个好主意。我会尝试一下,我意识到.net对安全性来说并不是最好的,但我只是想阻止用户将应用程序从一台机器复制到另一台机器,而它仍然可以工作。再次感谢。谢谢你的回复。1号听起来是这个特定应用程序的最佳解决方案,我将结合denied66的答案使用它。@JDx我认为你没有抓住要点。denied66接受的答案与我的第二个选项相同。您如何使用选项1和选项2来解决您的问题?