企业许可证的实施

4
我已经用C#开发了一款软件,并已实现客户使用单个许可证密钥升级软件的方法。这些单个许可证密钥是(32个字符)基于某些硬件内容计算而来,这些内容不太可能发生变化。这一切都很好地运作着。但是,我现在想要实现企业许可证。基本上,我希望客户能够使用一个密钥在不同的(不限量)机器上授权软件(因此我不能使用硬件检查)。对此,有几种想法:1. 在软件中硬编码 1 个许可证密钥始终有效;2. 根据请求为企业构建带有预编码许可密钥的自定义程序(不是我喜欢做的事情);3. 制作一些功能/算法/其他内容,以检查输入的许可证密钥是否有效(同时还能够使用每个企业不同的长度为32个字符的密钥)。我认为最后一个选项更好。然而,我无法想出一种方法来检查输入的许可证是否是有效的企业许可证。PS:我不是在寻找完全防止应用程序盗版的方法,只是想实现一个简单的企业许可证。

为什么不通过Web服务或网站公开验证和产品注册,并对其进行身份验证呢? - Lloyd
@Lloyd:我的客户已经通过网络请求许可证了。应用程序可能在没有活动互联网连接的计算机上运行。我不想让我的付费客户在另一台机器上进行另一个请求来验证购买的许可证。一旦他们购买了软件,我真的不想再打扰他们 :) - PeeHaa
那么你将不得不使用某种形式的硬编码私钥来验证代码。我曾经看到过使用EXE版本号和编码私钥来完成这个过程,以便升级可以使用相同的密钥。 - Lloyd
如果没有活动的互联网连接,有时会有可用吗?是否仍然会有局域网连接?我建议自动将消息发送到局域网中央服务器或您在互联网上的服务器。跟踪使用情况,并在必要时执行强制措施。将问题从技术问题转变为行政问题。如果他们违反合同,请通过电子邮件向他们发出警告。如果他们坚持不改,发送发票,如果他们不支付,请发送法律禁止通知。 - Kind Contributor
1个回答

2
根据我的经验,你应该选择对付费用户摩擦最小的解决方案。
人们要么为你的软件付费,要么不付费,只要你有某种验证许可证的机制,许可证的强度并不重要。我想不出有哪个软件是没有盗版副本可用的,这在很大程度上使得所有这方面的努力都是浪费的。
其中最令我烦恼的事情之一就是盗版副本比付费版本更好。例如,虚拟CD / DVD软件Daemon Tools受到一种与你相似的保护机制的保护。它生成一个特定的机器和软件版本密钥,并且通常使用合法方式会有点麻烦。我拥有一份5台PC许可证,如果我想更新它,我必须撤销旧版本许可证,发放新许可证并重新注册更新的软件。每次安装都要重复此过程。我经常考虑使用破解版,因为它提供了更简单的升级路径,基本上只需要安装软件。
我意识到你可能已经考虑过所有这些,并且可能持有不同的观点,但你的指导原则应该是使付费体验超过盗版体验。

请将您的消息传播给PC游戏行业! - Ucodia
@Ucodia 不错的例子!可惜它们似乎在教学上难以达到.. - Morten Mertner
我了解你提出的所有问题。因此,我在问题的最后一行以及对LLoyd评论的回复中都有所提及。然而,我仍在寻找一些方法来使用一些(伪)随机企业密钥。你说:“它生成一个特定于机器和软件版本的密钥,并且通常在合法使用方面会带来麻烦”--> 这只是针对单个许可证密钥,我现在只是在寻找一种输入企业密钥的方法,该方法不使用硬件哈希值。 - PeeHaa
除非您想使用域名或工作组名称,否则很难找到一些相对独特的东西来作为基础。您能否解释一下您认为企业密钥和普通密钥之间的区别是什么,除了后者被机器锁定之外?为什么要进行机器锁定?(我每两年至少更换一次新硬件,并且可能每台PC都要重新安装Windows两次,这将使您当前的解决方案变得麻烦,我个人认为)。 - Morten Mertner
你说“没什么大不了的”,但对于我来说,请求20个新许可证(针对不同的软件)真的很痛苦。我主张的事实是,无论你的保护有多么高级或安全,它都会被破解,因此最好的解决方案是完全免费的。这样,你只需要生成密钥,不需要机器密钥或伪随机性。如果你想跟踪安装情况,在安装期间或第一次运行时让软件向中央服务器报告即可。 - Morten Mertner
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接