软件的许可证密钥

时间:2011-04-29 08:52:40

标签: licensing license-key

我是第一次发布我的Windows应用程序的经验而且我没有提示我应该如何继续前进。我的问题在这里:

我有自己的网站在托管上运行。我想实施一个客户 门户网站在收到订单后,我将通过电子邮件提供用户名和密码 用户可以下载激活码。我知道这是一个很大的问题......如何保护我的应用程序免受重复?您知道将许可证系统应用于我的软件的“最佳”解决方案是什么?

  • 如何强制在特定的PC上执行应用程序?这是不是很复杂?

  • 在这种情况下,我应该为每个用户创建一个新的构建,以便激活密钥 解锁正确的构建?

  • 如果是这样,我理解每个配置文件都有自己的构建文件以及激活码和一种服务协议信息(即1年免费更新)。 我再次看到复杂的管理,我需要编译,构建和上传新版本的应用程序中的每一个变化......?好的...我的应用程序现在是一个简单的exe文件,包含一些文件夹和xml配置文件,但将来会是什么......?

  • 是否可以在所有用户之间共享一个可以通过使用用户激活码激活的应用程序文件(在这种情况下,用户将拥有自己的配置文件仅用于激活密钥和SA信息)。安全性怎么样?如果有人共享激活码,我猜应用程序可以在任何地方解锁。

  • 我应该在专用服务器上实现客户门户(即)吗?我没有可能安装自己的服务器。您如何看待ISP上的虚拟服务器?

  • 发票和订购流程怎么样?您认为电子商务商业解决方案是一个不错的选择吗?我想通过电子邮件或传真获得订单,然后处理许可证(仍然不知道如何)并发送发票信息以进行付款(即电汇)。你觉得怎么样?

  • 如果它需要花费的软件(仍然不知道价格)让我们说使用电汇转账的付款方式是否有意义不到30美元? share-it.com怎么样?安全吗?他们还处理客户门户吗?

非常感谢。

4 个答案:

答案 0 :(得分:4)

阻止用户在多台计算机上复制应用程序的常用方法是“节点锁定” - 在运行时,应用程序会检查某些计算机参数是否与加密许可证密钥或激活记录中记录的值相匹配。以太网MAC地址是一种流行的锁定参数,但这不是一个好的选择,因为在某些系统上可以设置或欺骗MAC地址。 Windows ID,计算机名称,用户登录名等参数的组合更安全。

要发出许可证,您可以向用户请求这些详细信息,也可以让他们运行一个小实用程序,将它们写入发送给您的文件中。然后,您可以在许可证密钥中对其进行加密,许可证密钥还可以包含其他信息,例如试用或订阅时间限制,功能配置信息等。

或者,所有这些都可以使用[产品激活] [2]自动完成。当您的应用程序首次运行时,它连接到托管许可证服务器,检查它是否是有效的许可证,并自动读取其主机上的锁定参数的名称,然后它可以加密它们并将它们保存在本地文件中然后读取每个它之后运行的时间(因此应用程序在初始验证后不需要再次连接到服务器)。如果您使用激活路线,则对您和您的用户来说更方便。

无论你走哪条路,都需要考虑: - 与您选择的电子商务提供商/支付处理器集成? - 如何处理没有Internet连接的用户? - 如何支持想要重新安置许可证的用户,可能是因为他们购买了新系统?你能确保他们一次只有一个活动副本吗? (您可能还想限制他们重新安置许可证的频率)。 - 如果您锁定了多个机器参数,您的锁定系统是否可以容纳用户升级其系统的一部分,从而可能导致其中一个节点锁定参数发生变化? - 如果用户的系统崩溃,他们怎么能在另一台机器上再次运行许可证? - 您如何颁发试用许可证? - 您如何防范试图破解许可证保护的人? - 将来您可能希望配置产品中的功能,例如为不同类型的用户提供不同的价格点或不同的功能组合。您的许可系统可以处理这个吗?

所有这些问题以及更多问题当然已经由合格的商业许可系统考虑和解决。

答案 1 :(得分:3)

我会使用与Nod32使用的类似系统(这就是为什么我不再使用它,但仍建议为其他人购买)。

应用程序有两种状态: demo full 。 您可以将演示版本用于30个月的时间段。

每个应用程序都有一个产品密钥,每天 验证远程服务器。如果验证失败,应用程序将退回演示模式

如果验证服务器无法访问,则会向用户显示“验证服务器无法访问,检查连接或手动验证”的消息。然后在一小时后再试一次。如果...允许说.. 3天申请尚未经过验证。它进入演示模式

如果有连接问题的用户点击通知气泡,他会看到一个视图,其中包含有关如何验证“再试一次”手册或按钮的信息。

对于手动验证,您有一个生成的代码(基于他的硬件数据),他可以将其与产品密钥一起输入您的网站。并获得一个手动验证号码。

我的2美分。

答案 2 :(得分:1)

  

如何强制在特定的PC上执行应用程序?是   它很复杂吗?

您可以将他的计算机ID /密钥对存储在您的数据库中。

  

在这种情况下,我应该为每个用户创建一个新的构建,以便   激活密钥是否会解锁正确的构建?

没有。当然,您不希望为1000个用户创建1000个版本。

  

如果是这样,我理解每个配置文件都有自己的构建文件   以及激活码和一种服务协议信息   (即1年免费更新)。

使用合适的工具轻松管理它。您可以将每个密钥“绑定”到产品的特定版本范围(例如v1.0.00 - v2.0.00)或指定密钥的有效期(SaaS方案)

  

是否可以在所有用户之间共享单个应用程序文件   可以使用用户激活码激活它。?

是。它被称为浮动或网络许可证.LAN许可证服务器允许在公司网络中运行一些有限数量的产品实例。这种方法被企业客户广泛使用。

  

我应该在专用服务器上实现客户门户(即)吗?一世   没有可能安装我自己的服务器。你怎么看   关于ISP上的虚拟服务器?

这取决于你在'自己的服务器'下的含义。您无法在共享主机上运行单独的守护程序/进程,您需要VPS或专用服务器。但您可以使用市场上已有的解决方案。

为什么需要自己实施激活系统?并自己运行服务器?看起来似乎更加复杂和昂贵。

ActivationCloud https://activation-cloud.com提供了一系列功能,可以满足向家庭和企业用户销售软件的ISV的需求。考虑使用它。

答案 3 :(得分:0)

请阅读我的问题“A licensing system for my (WinForms) application. Would this be secure enough? (Within reason)

我列出了一些可能性。

主要是,我注意到你希望程序只能在特定的PC上运行,为此我使用的函数为每台PC返回一个唯一的代码,并要求它是产品密钥的最后5个字符。

希望这有帮助。 :)