我正在构建一个小型 winforms 应用程序:ayende rhino licensing .许可工作正常,我可以创建许可并按我的选择分发它们。
问题是,如何让每个许可证只在一台机器上工作?我知道在 ayende 的项目中有一个名为 LicensingService 的类,我相信它可以做一些我正在尝试做的事情,但我就是想不通。我已经做了很多搜索,但除了 this one 之外找不到任何教程。 .
也许有人已经实现了这个,或者有一些关于如何实现这个的提示?如果有帮助,我可以访问网络服务器。
一如既往地感谢您的帮助。
最佳答案
老实说,这取决于您想让用户感到多么烦人。您可以实现一个 HWID(请参阅 How to fast get Hardware-ID in C#? 了解如何生成它们),它在系统之间是唯一的,然后让您的程序检查 HWID 是否与您在线存储它们的位置找到的 ID 匹配(通常通过使用数据库)。
不用说,这将使您的应用程序需要互联网连接才能运行,这可能会让您的用户感到有些沮丧。
或者您可以将 HWID 与序列号合并,并让您的应用程序执行相同操作以验证它们是否匹配,但这很容易被普通破解者破解。
归根结底,就安全性而言,.net 并不是最好的,因为您可以轻松获取源代码并根据需要修改程序集以修补某些保护措施。在决定要采取何种途径来保护您的软件时,请记住这一点。
关于c# - 特定于机器的 Winforms 许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975074/