【问题标题】:C# Application License Components and Controls [closed]C# 应用程序许可组件和控件 [关闭]
【发布时间】:2011-10-21 02:59:27
【问题描述】:

如果我有 5 台目标计算机,我打算将我的应用程序安装到其中一台目标计算机上。如何防止用户将我的应用程序复制到其他目标计算机?

为了清楚起见,我不希望他们在安装后复制我的应用程序(他们不应该从已安装的应用程序文件夹中复制我的应用程序)。现在的问题是我使用 Visual Studio 2010 设置和部署设置和部署我的应用程序,但是任何人都可以在安装后复制我的应用程序文件夹,例如,我的应用程序文件夹(exe、DLL 和资源)位于“Program Files/MyApplication” .他们实际上可以从该文件夹复制我的应用程序并将其粘贴到其他计算机然后使用它。当然,他们可以复制它,但我认为他们应该不能使用我复制的应用程序,对吧?有没有办法保护他们复制我的应用程序?我必须编写额外的代码?

我对软件分发真的很陌生。请指导我该怎么做。 谢谢

【问题讨论】:

    标签: c# licensing software-distribution copy-protection


    【解决方案1】:

    阻止用户在多台机器上运行应用程序的行业标准方法确实是将您的产品锁定到该系统的某些参数。但是,您需要考虑以下问题,以避免未来的工作或让客户感到不安。不处理这些问题的原始系统给节点锁定一个坏名声,但如果做得好,节点锁定是不引人注目的、灵活和安全的:

    • 如何准确获取要锁定的系统参数?要求用户阅读/输入它们是常见的错误来源,例如,将“l”误读为“1”或将“0”误读为“O”。
    • MAC 地址通常用于节点锁定,但这是一个糟糕的选择,因为管理员可以在许多操作系统下设置 MAC 地址。
    • 假设您将许可证锁定到系统的多个参数。如果用户进行了较小的系统升级,从而导致其中一个发生更改,会发生什么情况?如果您的应用突然拒绝运行,他们会不高兴。
    • 用户有时会希望将其许可证移动到另一台计算机上。您需要考虑如何在不使其成为安全漏洞的情况下支持此功能。
    • 用户机器会崩溃 - 它发生了。他们如何才能让他们的许可证在新的/重建的系统上再次运行?

    只是我们在解决方案中遇到并处理的一些问题。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您需要使用机器锁定/激活的许可证来防止这种情况。这确保只能从单台机器验证许可证 - 如果许可证验证失败,您可以决定采取哪些步骤 - 是否退出应用程序、向用户显示消息、允许宽限期等。

      试试CryptoLicensing,它支持激活/机器锁定许可证。

      免责声明:我为 CryptoLicensing 的开发商 LogicNP Software 工作。

      【讨论】:

        【解决方案3】:

        当你想要它真的很容易时,你可以使用LimeLM。 带有试用选项的简单在线验证。

        【讨论】:

          【解决方案4】:

          我使用 Infralution License Tracker。它是付费软件,但允许对应用程序的部分或全部进行许可。它还允许在线验证时进行密钥验证。可以使用客户信息生成密钥,因此使用来自目标计算机的信息进行注册应该是可行的。

          http://www.infralution.com/licensing.html

          【讨论】:

            【解决方案5】:

            您可以使用Rhino Licensing framework 生成许可证文件。它有具有 Generate 方法的 LicenseGenerator 类。这是它的样子:

             public string Generate(string name, Guid id, DateTime expirationDate, IDictionary<string, string> attributes, LicenseType licenseType);
            

            Generate 方法采用被许可方的名称。可以生成为 Guid.NewGuid() 的许可证的唯一 ID,到期日期和属性字典是您可以在许可证文件中存储自定义键值对的地方。

            它的工作方式是,您可以将机器的信息嵌入许可证中,在验证阶段您可以检查许可证是否属于同一台机器。这意味着您不能将一台机器的许可证文件复制到另一台机器上,因为它不起作用。

            在许可文件中您可以存储以下信息:

            • 许可证的到期日期
            • 为其生成许可证的人员的姓名
            • 根据系统信息计算哈希

            【讨论】:

            • 这意味着我必须为每个部署创建一个许可证以及我的应用程序?
            • 第一次需要创建许可证。并且您需要设置到期日期和系统信息。如果任何值被更改或修改,那么在这种情况下,您必须再次为应用程序生成新的许可证。
            猜你喜欢
            • 2012-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-19
            • 1970-01-01
            • 2014-04-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多