如果我有5台目标计算机,我将把我的应用程序安装到其中一台目标计算机上。我如何阻止用户将我的应用程序复制到其他目标计算机?
为了说清楚,我不希望他们在安装后复制我的应用程序(他们不应该从已安装的应用程序文件夹中复制我的应用程序)。问题是我现在使用Visual Studio 2010安装和部署设置和部署我的应用程序,但是任何人都可以在安装后复制我的应用程序文件夹,例如,我的应用程序文件夹(exe,DLL和资源)位于“Program Files / MyApplication” 。他们实际上可以从该文件夹复制我的应用程序并将其粘贴到其他计算机然后使用它。当然,他们可以复制它,但我认为他们不应该能够使用我复制的应用程序吗?有没有办法保护他们复制我的申请?我必须写一个额外的代码吗?
我是软件分发的新手。请指导我必须做的事情。 谢谢
答案 0 :(得分:7)
您可以使用Rhino Licensing framework生成许可证文件。它有LicenseGenerator类,它有一个Generate方法。这是它的样子:
public string Generate(string name, Guid id, DateTime expirationDate, IDictionary<string, string> attributes, LicenseType licenseType);
Generate方法采用被许可人的名称。许可证的唯一ID,可以生成为Guid.NewGuid(),到期日期和属性字典是您可以在许可证文件中存储自定义键值对的位置。
它的工作方式是,您可以在许可证中嵌入机器的信息,在验证阶段,您可以检查许可证是否属于同一台机器。这意味着您无法复制一台计算机的许可文件并将其放在另一台计算机上,因为它无法正常工作。
在许可证文件中,您可以存储以下信息:
答案 1 :(得分:4)
阻止用户在多台计算机上运行应用程序的行业标准方法确实是将产品锁定到该系统的某些参数。但是,您需要考虑以下问题,以避免未来的工作或让客户感到不安。没有处理这些问题的原始系统给节点锁定带来了错误的名称,但是如果正确完成,节点锁定是不引人注目的,灵活的和安全的:
我们在解决方案中遇到并处理过的一些问题。希望这会有所帮助。
答案 2 :(得分:2)
我使用Infralution License Tracker。它是付费软件,但允许部分或全部应用程序的许可。它还允许在线验证的密钥验证。可以使用客户信息生成密钥,因此使用目标计算机中的信息进行注册应该是可行的。
答案 3 :(得分:0)
如果您想要它真的很容易,可以使用LimeLM。 通过试用选项进行简单的在线验证。
答案 4 :(得分:0)
您需要使用机器锁定/激活的许可证来防止这种情况发生。这样可以确保只能从一台计算机验证许可证 - 如果许可证验证失败,您可以决定采取的步骤 - 是退出应用程序,向用户显示消息,允许宽限期等等。
尝试使用支持激活/机器锁定许可的CryptoLicensing。
免责声明:我为CryptoLicensing的开发商LogicNP Software工作。