Winforms许可特定于机器
本文关键字:机器 于机器 许可 Winforms | 更新日期: 2023-09-27 18:29:54
我正在使用:ayende-rinolicensing构建一个小型winforms应用程序。许可证运行良好,我可以创建许可证并根据自己的选择分发。
问题是,如何使每个许可证仅在一台机器上运行?我知道ayende的项目中有一个名为LicensingService的类,我相信它能做一些我想做的事情,但我就是想不通。我已经做了很多搜索,除了这一个,我真的找不到任何教程。
也许有人已经实现了这一点,或者对我如何实现这一点有一些建议?如果有帮助的话,我确实可以访问网络服务器。
我们一如既往地感谢您的帮助。
这取决于你想让用户感到多么讨厌。您可以实现一个HWID(请参阅如何在C#中快速获取硬件ID?关于如何生成它们),该ID在不同系统之间是唯一的,然后让您的程序检查HWID是否与您在线存储它们的位置匹配(通常使用数据库)。
不用说,这将使你的应用程序需要连接互联网才能运行,这可能会让你的用户感到有点沮丧。
或者,你可以将HWID与序列号合并,并让你的应用程序进行同样的操作来验证它们是否匹配,但这很容易被普通破解者破解。
归根结底,就安全性而言,.net并不是最好的,因为你可以很容易地获得源代码并根据需要修改程序集来修补某些保护。在决定要采取何种途径来保护软件时,请记住这一点。
我不知道什么是犀牛许可证。为了满足你的需求,通常有两种方法。
-
将一些随机生成的密码提供给客户端计算机,并在服务器中维护一个密码池。每次输入密码在本地机器中注册应用程序时,请通过互联网连接到您的服务器,检查它是否已经在其他地方注册。
-
或者,我们所做的是,生成一个该机器唯一的代码(也许是某个唯一机器id的哈希,比如macID),并让客户端将其发送给您。然后,您可以重新散列代码,并使用
some logic
将其发回。现在,当客户端将此代码输入到他的机器时,执行相同的操作:获取机器id,使用相同的some logic
执行相同的重新哈希,并检查它是否匹配。
我想不出其他什么了