软件的许可证密钥

发布于 2024-11-04 05:21:25 字数 1437 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

过期以后 2024-11-11 05:21:25

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

应用程序有两种状态:演示完整
您可以使用演示版 30 个月。

每个应用程序都有一个产品密钥,该密钥每日针对远程服务器进行验证。如果验证失败,应用程序将返回到演示模式。

如果验证服务器无法访问,您将向用户显示一条消息“验证服务器无法访问,请检查您的连接或手动验证”。然后一小时后重试。如果是.. 可以说.. 3 天的申请尚未得到验证。它确实进入了演示模式。

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

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

我的2美分。

i would go with similar system to what i have seen used by Nod32 ( which is why i don't use it anymore, but still suggest to buy for everyone else ).

Application has two states: demo and full.
You can use the demo version for time period of 30 month.

And each application has a product key, which is daily verified against remote server. If verification fails, application slips back into demo mode.

If the verification server is unreachable, you show user a message that "verification server unreachable, check your connection or verify manually". Then try again in an hour. If for .. lets say .. 3 days application hasn't been verified. It does into demo mode.

If user, which has connection issues clicks on notification bubble, he sees a view containing information about how to verify manual or button for "try again".

For manual verification you have a generated code (based on his hardware data), which he can enter in your website together with his product key. And get a number for manual verification.

my 2 cents.

墨小墨 2024-11-11 05:21:25

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

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

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

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

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

The usual way to prevent users from just replicating your application on many machines is 'node-locking' - at runtime the application checks that certain machine parameters match the values recorded in an encrypted license key or activation record. The Ethernet MAC address is a popular locking parameter, but this is not a good choice as on some systems the MAC address can be set or spoofed. A combination of parameters such as Windows ID, machine name, perhaps user log-in name etc. is more secure.

To issue a license you either request these details from the user or have them run a small utility that writes them to a file they send to you. You can then encrypt them in the license key, which can also contain other information such as a trial or subscription time limit, feature configuration info etc.

Alternatively, all this can be done automatically using [product activation][2]. When your application first runs it connects to a hosted license server, checks it is a valid license, and automatically reads the names of the locking parameters on its host, so it can then encrypt them and persist them in a local file it then reads each time it runs after that (so the app does not need to connect to the server again after the initial validation). If you go the activation route it is much more convenient for you and your users.

Whatever route you go, you need to think about:
- Integration with your chosen ecommerce provider/payment processor?
- How to handle users who don't have an Internet connection?
- How to support users who want to relocate their license, perhaps because they bought a new system? Can you ensure they have only one copy active at any one time? (and you may also want to limit how often they can relocate their license).
- If you lock to several machine parameters, can your locking system accommodate the user upgrading part of their system, so potentially causing one of the node-locking parameters to change?
- If the user's system crashes, how can they get their license running again on another machine?
- How do you issue trial licenses?
- How do you protect against people who try to hack your license protection?
- Might you in future want to configure features in your product e.g. offer different price points, or different combinations of features to different types of users. Can your licensing system handle this?

All these issues and more have of course already been considered and resolved by competent commercial licensing systems.

世俗缘 2024-11-11 05:21:25

如何强制应用程序仅在特定电脑上执行?是
实现起来很复杂吗?

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

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

不。您绝对不想为 1000 个用户创建 1000 个版本。

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

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

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

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

我应该在专用服务器(即)上实施客户门户吗?我
无法安装我自己的服务器。你怎么认为
关于 ISP 上的虚拟服务器吗?

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

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

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

How I can force the application to be excuted just on specific pc? Is
it complex to achive?

You can store his computer ID/Key pair in your database.

In this scenario should I create a new build for each user so the
activation key will unblock just the right build?

No. Definitely you do not want to create 1000 builds for 1000users.

If so I understand that each profile will have its own build file
along with activation code and a sort of service agreement information
(i.e. 1 year of free updated).

It is easy to manage it with a right tool. You can ‘bind’ each key to a specific version range of your product (say v1.0.00 – v2.0.00) or specify the validity period of the key ( SaaS scheme)

Is it possible just to share among all user a single application file
which can be activated by using the user activation code ..?

Yes. It’s called floating or network licenses.LAN license server allows to run some limited number of product’s instances in corporate network. This approach is widely used by corporate customers.

Should I implement the customer portal on a dedicated server (i.e) ? I
don't have possibility to install my own server. What do you think
about virtual server on ISP?

It depends on what you mean under ‘own server’. You can’t run separate daemon/process on shared hosting, you need VPS or dedicated server. But you can use the solutions that are present on the market already.

Why do you need to implement activation system yourself? And run servers yourself? It may appear a far more complicated and costly as it seems.

ActivationCloud https://activation-cloud.com provides a good set of features that can fit needs of ISVs that is selling software to home and corporate user. Consider to use it.

白衬杉格子梦 2024-11-11 05:21:25

阅读我的问题“许可系统我的(WinForms)应用程序是否足够安全?(在合理范围内)”

我列出了一些可能性。

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

希望这有帮助。 :)

Read my question "A licensing system for my (WinForms) application. Would this be secure enough? (Within reason)"

I listed a few possibilities.

Mainly, I noticed that you wanted the program to be only runnable on a specific PC, for which I used a function which returns a unique code for each PC, and required it to be the last 5 characters of the Product Key.

Hope this helped. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文