许可 C# 应用程序

本文关键字:应用程序 许可 | 更新日期: 2023-09-27 17:55:35

我想知道如何设置应用程序的到期日期,但是在某种程度上,客户(客户实际上不存在,但假设有一天他们会存在)需要将散列密钥(我的日期)粘贴到他们的产品实例中。 现在我正在按照如下所述解决它,但我认为这不是一个好主意,让我解释一下:

使用日期时间选取器创建了小型应用程序,并且我正在选择一个日期,直到我的应用程序处于活动状态,例如 7.7.2016,并将其作为刻度存储在注册表中,并在每次启动应用程序时从注册表中读取刻度。 这还不错,但问题是我必须在客户的 PC 上运行应用程序以通过选择日期写入他们的注册表,这并不好,因为如果我忘记删除我的小应用程序,客户可以根据需要设置日期。另一种解决方案是在我的本地计算机上生成一个日期,从注册表副本中读取刻度值,然后远程输入键(注册表中的刻度值)或任何到客户的 PC 上。 但这不是一个好的解决方案,我对此并不满意,因为客户可能会发现我存储即时报价的位置并将其复制到另一台机器上,另一台机器和另一台机器......

我想知道我是否可以执行以下操作:

在我的开发机器上,我将运行软件进行激活(密钥生成器),然后我可以选择一个日期,直到我的软件应该有效,并获取处理器或硬盘驱动器的 ID,并将其放在一起以创建一个哈希 [ID+DATE](因此它对于每台机器都是唯一的)并将其存储到数据库或注册表中, 无论如何,在我的客户应用程序中,我可以接下来"解压缩"哈希以仅获取日期部分,因此每次客户运行应用程序时我都可以执行以下操作:

if(DateTime.Now > "HASHED date part")
    Message : application has expired!

我可以将 date+ID 放在一起并对其进行哈希处理或以某种方式保护它,以便用户无法读取或修改它,然后我剪切日期部分并检查应用程序是否仍然有效?

许可 C# 应用程序

不,你不能。 哈希的全部意义在于它是一种方式。 这是一种算法,旨在防止您确定从中生成哈希的原始数据。

如果您希望能够从密码数据重新创建原始数据,则需要加密数据。

同样值得注意的是,有很多方法可以击败你的方法,阻止用户运行程序;许可软件是困难的。

另外,我可以特别建议(基于销售商业成功产品的经验,现在已经超过20年......),你的许可证控制方案首先应该很简单。

我特别(!)建议您不要尝试检查或验证CPU-id,也不要尝试验证许可计算机的任何其他物理特征。我见过的每一个声称这样做的工具都被证明是不可靠的。此外,我的客户一再告诉我,他们欣赏该软件易于从一台机器移动到另一台机器的事实。

(是的,我们确实扫描了一些目录,只是为了让"摆弄日期"变得不那么微不足道......

我们信任他们,猜猜他们是做什么的? 呃呵......他们它。 如果你对某人诚实,并给他们一个真正值得你收费的产品,人们也非常愿意对你诚实。(而且,不要为极少数不是的人失眠......这些人不是你的客户,他们永远不会是。永远不要让付钱给你的人的生活变得困难。

在我们产品的最新版本中,许可证信息存储在 Windows 注册表中,并在产品安装时使用与安装程序一起打包并由安装程序调用的 DLL 文件插入。它仅由序列号、产品功能向量和到期日期组成,采用模糊的十六进制字符串。 该号码还用于隐藏"许可给"公司名称,该名称在软件启动时显示在初始屏幕上。 安装程序运行时需要管理员权限,原因多种多样,包括此原因。要更改许可证信息,您必须重新安装。

您打算出售给政府(一个非常有利可图的细分市场)的任何软件通常必须具有许可证控制功能,并且不得有任何类型的"免费演示"选项,因为政府通常不允许将公共资金花在任何可以(以任何方式)"免费"获得的东西上。

最后一点评论:我们不提供任何形式的"免费演示"。如果您想"试用"我们的产品,您必须购买限时副本。 您可以在时间限制期限内将全价应用于不定时的副本。 有些人只是购买(更便宜的)限时许可证,使用我们的产品来解决他们的问题,他们的问题(碰巧)再也不会发生,他们很高兴,因此我们也很高兴。我们收入的很大一部分是以这种方式实现的。

对我来说,这一点值得重复:"照顾好你的客户,他们也会照顾你。如果您的许可计划"繁琐而可恶"......;-) ...嗯,这是人们在决定是否购买商品时非常认真考虑的事情之一。您可能会因为您的计划是 a*s 中的痛苦而失去销售。

您可以托管许可服务器,并为每个用户提供一个令牌,以便在他们启动应用程序时用于验证。然后,您的所有dateTime内容都可以在您的服务器上处理,并且您的用户偷偷摸摸的风险要小得多。这意味着运行您的应用程序的每个人都需要连接到网络,这可能是您不可接受的。