You can use Rhino Licensing framework for license file generation. It has LicenseGenerator class which has a Generate method. Here is what it looks like:
Generate method takes the name of the licensee. Unique id for the license which can be generate as Guid.NewGuid(), the expiration date and the attributes dictionary is a place where you can store a custom key value pair in the license file.
The way it can works is that, you can embed the information of the machine in the license and in the verification phase you can check whether the license belongs to the same machine. This means that you can not copy license file of one machine and put it on another machine because it won't work.
In the license file you can store the following information:
The expiry date of the license
Name of the person for whom the license is generated
The industry-standard way of preventing users from running an application on more than one machine is indeed to lock your product to some parameters of that system. However, you need to think about the following issues to avoid future work or upset customers down the road. Crude systems that don't deal with these issues have given node-locking a bad name, but when done properly node-locking is unobtrusive, flexible and secure:
How will you accurately obtain the system parameters you will lock to? Asking users to read/type them is a common source of error, for example by mis-reading an 'l' for a '1' or a '0' for an 'O'.
The MAC address is commonly used for node-locking, but this is a poor choice as the MAC address can be set by an admin under many operating systems.
Say you lock a license to several parameters of the system. What will happen if the user does a minor system upgrade, so causing one of them to change? They won't be happy if your app suddenly refuses to run.
Users will want to move their license to a different machine at some point. You'll need to think about how you support this without making it a security hole.
Users machines will crash - it happens. How can they get their license running again on their new/rebuilt system?
Just some issues we've encountered and dealt with in our solutions. Hope this helps.
I use Infralution License Tracker. It is payware but allows for licensing of some part or all of an application. It also allows for key verification on on-line verification. It is possible to use customer information to generate the key so it should be feasible to register using information from the target computer.
You need to use machine-locked / activated licenses to prevent this. This ensures that the license can only be validated from a single machine - if license validation fails, you can decide what steps to take - whether to exit the app, show a message to the user, allow a grace period, etc.
Try CryptoLicensing which supports activated / machine-locked licenses.
DISCLAIMER: I work for LogicNP Software, the developer of CryptoLicensing.
发布评论
评论(5)
您可以使用Rhino 许可框架来生成许可证文件。它有 LicenseGenerator 类,其中有一个生成方法。它如下所示:
生成方法采用被许可人的名称。许可证的唯一 ID(可以生成为 Guid.NewGuid())、到期日期和属性字典是您可以在许可证文件中存储自定义键值对的位置。
它的工作原理是,您可以将机器的信息嵌入到许可证中,在验证阶段您可以检查许可证是否属于同一台机器。这意味着您不能复制一台机器的许可证文件并将其放在另一台机器上,因为它不起作用。
在许可证文件中,您可以存储以下信息:
You can use Rhino Licensing framework for license file generation. It has LicenseGenerator class which has a Generate method. Here is what it looks like:
Generate method takes the name of the licensee. Unique id for the license which can be generate as Guid.NewGuid(), the expiration date and the attributes dictionary is a place where you can store a custom key value pair in the license file.
The way it can works is that, you can embed the information of the machine in the license and in the verification phase you can check whether the license belongs to the same machine. This means that you can not copy license file of one machine and put it on another machine because it won't work.
In the license file you can store the following information:
防止用户在多台计算机上运行应用程序的行业标准方法实际上是将您的产品锁定到该系统的某些参数。但是,您需要考虑以下问题,以避免将来的工作或让客户感到不安。不处理这些问题的原始系统给节点锁定带来了坏名声,但是如果正确完成,节点锁定是不引人注目的、灵活的和安全的:
只是我们在解决方案中遇到并处理的一些问题。希望这有帮助。
The industry-standard way of preventing users from running an application on more than one machine is indeed to lock your product to some parameters of that system. However, you need to think about the following issues to avoid future work or upset customers down the road. Crude systems that don't deal with these issues have given node-locking a bad name, but when done properly node-locking is unobtrusive, flexible and secure:
Just some issues we've encountered and dealt with in our solutions. Hope this helps.
我使用 Infralution License Tracker。它是付费软件,但允许对应用程序的部分或全部进行许可。它还允许在线验证密钥验证。可以使用客户信息来生成密钥,因此使用来自目标计算机的信息进行注册应该是可行的。
http://www.infralution.com/licensing.html
I use Infralution License Tracker. It is payware but allows for licensing of some part or all of an application. It also allows for key verification on on-line verification. It is possible to use customer information to generate the key so it should be feasible to register using information from the target computer.
http://www.infralution.com/licensing.html
如果您想要非常简单,您可以使用 LimeLM。
带有试用选项的简单在线验证。
When you want it really easy you can use LimeLM.
Simple online-verification with a trial option.
您需要使用机器锁定/激活的许可证来防止这种情况。这确保只能从单台计算机验证许可证 - 如果许可证验证失败,您可以决定采取什么步骤 - 是否退出应用程序、向用户显示消息、允许宽限期等。
尝试 CryptoLicensing 支持激活/机器锁定许可证。
免责声明:我在 LogicNP Software 工作,该公司是 CryptoLicensing 的开发商。
You need to use machine-locked / activated licenses to prevent this. This ensures that the license can only be validated from a single machine - if license validation fails, you can decide what steps to take - whether to exit the app, show a message to the user, allow a grace period, etc.
Try CryptoLicensing which supports activated / machine-locked licenses.
DISCLAIMER: I work for LogicNP Software, the developer of CryptoLicensing.