【问题标题】:license-key for software [closed]软件的许可证密钥[关闭]
【发布时间】:2011-08-15 08:37:29
【问题描述】:
我是第一次发布我的 Windows 应用程序,但我不知道应该如何继续。这是我的问题:
我有自己的网站在主机上运行。我想实现一个客户
门户网站,因此在收到订单后,我将通过电子邮件提供用户名和密码
用户可以在哪里下载激活码。我知道这是一个大问题......如何保护我的应用程序不被重复?您知道将许可证系统应用于我的软件的“最佳”解决方案是什么吗?
如何强制应用程序仅在特定电脑上执行?实现起来复杂吗?
在这种情况下,我是否应该为每个用户创建一个新版本,以便激活密钥
解锁正确的构建?
如果是这样,我了解每个配置文件都有自己的构建文件以及激活码和某种服务协议信息(即 1 年免费更新)。
我再次认为它管理起来很复杂,对于我需要编译、构建和上传新版本的应用程序中的每一个更改......?好的...我现在的应用程序是一个简单的 exe 文件,其中包含一些文件夹和 xml 配置文件,但是将来会怎样...?
是否可以只在所有用户之间共享一个可以使用用户激活码激活的应用程序文件(在这种情况下,用户将拥有自己的配置文件,仅用于激活密钥和 SA 信息)。安全呢?如果有人分享激活码,我猜该应用程序可以在任何地方解锁。
我应该在专用服务器(即)上实施客户门户吗?我没有可能安装自己的服务器。您如何看待 ISP 上的虚拟服务器?
发票和订购流程如何?您认为电子商务商业解决方案是一个不错的选择吗?例如,我想通过电子邮件或传真获得订单,然后处理许可证(仍然不知道如何)并发送带有付款信息的发票(即电汇)。你怎么看?
如果软件的成本(仍然不知道价格)比 30 美元以下,那么使用电汇作为付款方式是否有意义? share-it.com 怎么样?安全吗?他们还处理客户门户吗?
非常感谢。
【问题讨论】:
标签:
licensing
license-key
【解决方案1】:
防止用户在多台机器上复制您的应用程序的常用方法是“节点锁定” - 在运行时,应用程序会检查某些机器参数是否与加密的许可证密钥或激活记录中记录的值匹配。以太网 MAC 地址是一个流行的锁定参数,但这不是一个好的选择,因为在某些系统上 MAC 地址可以设置或欺骗。 Windows ID、机器名称、用户登录名等参数的组合更安全。
要颁发许可证,您可以向用户请求这些详细信息,或者让他们运行一个小型实用程序,将它们写入他们发送给您的文件中。然后,您可以在许可证密钥中对其进行加密,许可证密钥还可以包含其他信息,例如试用或订阅时间限制、功能配置信息等。
或者,所有这些都可以使用 [产品激活][2] 自动完成。当您的应用程序首次运行时,它会连接到托管许可证服务器,检查它是否是有效许可证,并自动读取其主机上的锁定参数的名称,然后它可以加密它们并将它们保存在本地文件中,然后读取每个之后运行的时间(因此应用程序不需要在初始验证后再次连接到服务器)。如果您走激活路线,您和您的用户会更方便。
无论你走哪条路,你都需要考虑:
- 与您选择的电子商务提供商/支付处理器集成?
- 如何处理没有互联网连接的用户?
- 如何支持想要迁移许可证的用户,可能是因为他们购买了新系统?你能确保他们在任何时候都只有一个副本处于活动状态吗? (您可能还想限制他们重新定位许可证的频率)。
- 如果您锁定多个机器参数,您的锁定系统能否适应用户升级其系统的一部分,从而可能导致其中一个节点锁定参数发生变化?
- 如果用户的系统崩溃,他们如何让他们的许可证在另一台机器上再次运行?
- 您如何颁发试用许可证?
- 您如何防范试图破解您的许可证保护的人?
- 您将来可能想在您的产品中配置功能,例如为不同类型的用户提供不同的价格点或不同的功能组合。您的许可系统可以处理这个问题吗?
所有这些以及更多的问题当然已经被合格的商业许可系统考虑和解决了。
【解决方案2】:
我会使用与我看到的 Nod32 使用的系统类似的系统(这就是我不再使用它的原因,但仍然建议为其他人购买)。
应用程序有两种状态:demo 和 full。
试用版可以使用 30 个月。
每个应用程序都有一个产品密钥,每天针对远程服务器进行验证。如果验证失败,应用程序会滑回演示模式。
如果验证服务器无法访问,您会向用户显示“验证服务器无法访问,请检查您的连接或手动验证”的消息。然后一小时后再试。如果 .. 可以说 .. 3 天的申请尚未通过验证。它确实进入了演示模式。
如果有连接问题的用户单击通知气泡,他会看到一个视图,其中包含有关如何验证手册或“重试”按钮的信息。
对于手动验证,您有一个生成的代码(基于他的硬件数据),他可以将其与他的产品密钥一起输入您的网站。并获取一个号码进行人工验证。
我的 2 美分。
【解决方案3】:
如何强制应用程序仅在特定电脑上执行?是
实现起来复杂吗?
您可以将他的计算机 ID/密钥对存储在您的数据库中。
在这种情况下,我应该为每个用户创建一个新版本,以便
激活密钥会解锁正确的构建吗?
没有。您绝对不想为 1000 个用户创建 1000 个构建。
如果是这样,我知道每个配置文件都有自己的构建文件
连同激活码和某种服务协议信息
(即 1 年免费更新)。
使用正确的工具可以轻松管理它。您可以将每个密钥“绑定”到产品的特定版本范围(例如 v1.0.00 - v2.0.00)或指定密钥的有效期(SaaS 方案)
是否可以在所有用户之间共享一个应用程序文件
可以通过用户激活码激活..?
是的。它被称为浮动或网络许可证。LAN 许可证服务器允许在公司网络中运行一些有限数量的产品实例。这种方法被企业客户广泛使用。
我应该在专用服务器(即)上实施客户门户吗?一世
没有可能安装我自己的服务器。你觉得怎么样
关于 ISP 上的虚拟服务器?
这取决于您在“自己的服务器”下的意思。您不能在共享主机上运行单独的守护程序/进程,您需要 VPS 或专用服务器。但您可以使用市场上已有的解决方案。
为什么需要自己实现激活系统?并自己运行服务器?它可能看起来更加复杂和昂贵。
ActivationCloud https://activation-cloud.com 提供了一组很好的功能,可以满足向家庭和企业用户销售软件的 ISV 的需求。考虑使用它。