【问题标题】:Winforms licensing specific to machine特定于机器的 Winforms 许可
【发布时间】:2012-04-02 10:52:10
【问题描述】:

我正在使用:ayende rhino licensing 构建一个小型 Winforms 应用程序。许可工作正常,我可以创建许可并根据我的选择分发它们。

问题是,如何让每个许可证只在一台机器上工作?我知道ayende 的项目中有一个名为 LicensingService 的类,我相信它的作用类似于我正在尝试做的事情,但我就是想不通。我做了很多搜索,除了this one,真的找不到任何教程。

也许有人已经实现了这一点,或者对我如何实现这一点有一些提示?如果有帮助,我确实可以访问网络服务器。

一如既往地感谢任何帮助。

【问题讨论】:

    标签: c# winforms licensing


    【解决方案1】:

    说实话,这取决于您想让用户感到多么烦人。您可以实现一个 HWID(请参阅How to fast get Hardware-ID in C#? 了解如何生成它们),该 HWID 在系统之间是唯一的,然后让您的程序检查 HWID 是否与您在线存储它们的位置找到的 ID 匹配(通常使用数据库)。

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

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

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

    【讨论】:

    • 感谢您的回复,这听起来是个好主意。我会试一试,我意识到 .net 不是最好的安全性,但我只是想阻止用户将应用程序从一台机器复制到另一台机器,它仍然可以工作。再次感谢。
    【解决方案2】:

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

    1. 要么给客户端机器一些随机生成的密码,要么在你的服务器中维护一个密码池。每次输入密码以在本地计算机上注册应用程序时,请通过 Internet 连接到您的服务器,检查它是否已在其他地方注册。

    2. 1234563然后,您将重新散列代码并使用some logic 将其发回。现在,当客户端将此代码输入到他的机器时,执行相同的操作:获取机器 ID,使用相同的 some logic 进行相同的重新散列并检查它是否匹配。

    我想不出别的了

    【讨论】:

    • 感谢您的回复。 1 号听起来像是这个特定应用程序的最佳解决方案,我将结合 denied66 的答案使用它。
    • @JDx 我认为你没有抓住重点。 denied66 接受的答案与我的第二个选项相同。您如何同时使用选项 1 和 2 来解决您的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多