使用许可证保护自定义.NET组件的最佳方法是什么?

时间:2009-03-31 14:29:42

标签: c# licensing

许可自定义.NET组件或销售应用程序的最佳方法是什么?

  • 封闭源
  • 2授权模式:
    • 试用限制功能许可(免费)
    • 功能齐全

4 个答案:

答案 0 :(得分:6)

对于“封闭源”场景,请考虑使用混淆。我一直在使用SmartAssembly,对结果非常满意。

关于许可模式。您正在谈论.net组件,因此目标受众是开发人员。我不认为他们会处理免费的有限试验。如果您打算向开发者社区出售有价值的东西,请准备好在Rapidshare或种子上看到“全功能”版本。

我建议专注于支持和频繁更新/增强而不是保护。在大多数情况下,“业务”购买支持而非二元。

如果您需要一些工具标题,为什么不为此而谷歌? “.net licensing”查询将为您提供链接音。

希望有所帮助。

答案 1 :(得分:0)

这里有很多缺失的细节。

您是从某人那里获得许可还是尝试创建许可证?

开源,封闭源,卖?如果卖,你提供来源吗?

组件/应用程序的最终用法是什么?您是托管它(如多租户网站)还是更多COTS?

您的竞争对手在销售模式方面做了哪些工作?它似乎对他们有用吗?例如听起来合理吗? < - 模仿那个。

当您回答这些问题时,您会找到符合您需求的许可证。

答案 2 :(得分:0)

GPL。或者宣布它为公共领域。或者是一个24页的EULA,它限制了用户在使用组件时刮胡子的能力。或类似的东西。

为什么不告诉我们您的目标是什么,预期用途是什么,以及您希望发生什么?

答案 3 :(得分:0)

当您试用可升级到完整版本的软件(换句话说,包含所有功能的程序集)时,您可以做很多事情来阻止某人最终破解它。 (使用.net,使用本机程序集更容易)。

签名&混淆是防止它以一种非常易读的形式进行逆向工程的唯一方法,但只是使用像反射器这样的东西基本上会给你完整的。

保持许可证外观的最简单方法之一是:

  • 使用公钥/私钥加密将许可信息(到期日期,启用的功能等)保存到文件中
  • 在程序集中包含公钥
  • 解码应用程序启动时的加密信息,以检查是否有人使用您的应用程序。
  • 必要时使用您的私钥生成许可证并分发这些文件(如果数据足够小,则分发密钥)

作为替代方案,您可以使用应用程序以明文形式将许可信息包含在带有哈希码的明文中(这是许可密钥,算法也应该支持公钥/私钥),并且只检查许可信息是否匹配哈希码。