我应该在哪里存储我的应用程序的“激活”密钥?

问题描述:

我已经写了一个应用程序,我想给它添加一个注册码/序列号(我对最小不满 - ara#4在this Eric Sink article)很大。我的问题是关于在应用程序注册后应该在哪里存储“激活”。据我了解,我有权将密钥存储在公共场所,所有用户都可以阅读(但需要管理员权限才能保存)并存储每个用户的激活(但每个用户都可以电脑将不得不独立激活)。这给了我两个选择:我应该在哪里存储我的应用程序的“激活”密钥?

  1. 某些具有本地管理员权限的用户激活产品。激活存储在HKLM,程序文件文件夹或其他地方,所有用户都可以读取它,并为所有用户激活该产品。
  2. 用户(具有或不具有管理权限)激活产品。激活存储在以用户为中心的位置(每个用户app.config,HKCU等)。优点是用户不必是管理员。缺点是,如果有6个用户使用计算机,则每个用户都必须激活产品。他们可以重复使用相同的序列,但他们仍然必须输入。

这真的是取舍吗?如果是,其他人做了什么?作为一名开发人员,我习惯于作为本地管理员的人,但在现实世界中,我不认为我的许多公司用户是本地管理员,这使我倾向于选择2.是否经常共享计算机足以让我不应该担心?

同样,我不是在问如何物理注册电脑 - 我并不担心。我只需要提供密钥并进行检查,因为我希望尽可能无侵入性。

我会推荐一个不需要管理员权限的解决方案。许多用户,特别是在共享环境中,不会有这些权利,并且无法方便地找到任何人。另外,在未来几年,随着安全状况的改善,我认为在您使用的计算机上拥有管理员权限将变得越来越不寻常。

+0

但是,在不同的用户在同一台​​计算机上一次又一次地注册相同的应用程序是该死的烦人!我认为这是应用程序设计中的一个缺陷。 – 2009-07-12 07:45:32

+5

那么,我们使用的一种解决方案是将激活信息放入当前用户注册表中,然后如果管理员权限可用,则将其放入本地计算机中。如果管理员权限可用,则机器上的任何共享用户都不会受到干扰。如果没有管理员权限可用,则要求每个用户激活一次。 – 2009-07-12 14:12:10

注册表似乎是商业软件的一个好的解决方案。至少在我曾经工作的地方,普通用户不会是本地计算机管理员,因此每次安装都需要本地管理员帐户。这是一件好事,因为它可以减少安装业务计算环境中的所有内容的人员对您的支持人员的困扰。权衡是当然,用户会生气,他们不能安装的东西或必须联系支持做到这一点,但嘿...:)

其他的东西:

  • USB /其他类型的加密狗(ALA老 3DMAX)
  • 普通的旧文本文件(ALA 仪(GPS)软件在移动设备)
  • 对其进行编码/重写钥匙插入 二进制文件或二进制文件 的一部分(这样做把戏早在日老DOS 天)
  • 商店他们通过网络自己的DB(ALA EverQu EST /其他MMORPG游戏)
  • 本地密钥DB(ALA MathLab我认为)

我们我们的激活代码保存到注册表中当前用户(HKCU),我们曾与它非常小的问题。我们的客户可以运行从家用电脑到合作网络上的瘦客户机。

如果您的软件将在学校或其他教育环境中使用,您需要提供其他方法。它可以像单独的注册应用程序一样简单,它将保存到所有用户的激活中。你的软件将不得不做两次注册表查找,但这是一个小的代价。

如何为您的应用程序使用独立存储?

您将有能力将此信息存储在mashiene级别以供您注册,并且配置更改可以在用户级别上保留。

通常,大多数计算机都由单个用户使用(或多个人仍在使用相同的用户帐户)。因此,基于用户的存储无论如何都将在大部分时间工作。

但它不是/或。所有用户都可以写入文件夹位置,例如ProgramData文件夹。关键是让每个人都可读写该文件,以便您可以验证内容而不管用户。

DeployLX Licensing对非安全许可证数据执行此操作,以便多个用户可以使用它,而无需管理员明确授予权限。

你应该一致。如果需要管理员权限来安装程序,则需要管理员权限才能注册它。同样,如果您以某种方式设法在没有管理员权限的情况下安装它,请不要注册它。

如果您安装并注册一步,这不会是一个问题。