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

时间:2009-07-12 07:24:11

标签: windows registration activation

我已经写了一个应用程序,我想为它添加一个注册密钥/序列号(我在最小的不便之处 - this Eric Sink article的ala#4)。我的问题是,一旦申请注册,存储“激活”的位置。据我了解,我在将密钥存储在公共场所之间进行权衡,所有用户都可以将其读取(但需要管理员权限才能保存)并存储每个用户的激活(但是每个用户都在计算机必须独立激活)。这给了我两个选择:

  1. 某些拥有本地管理员权限的用户会激活该产品。激活存储在HKLM,程序文件文件夹或所有用户都可以读取的其他地方,并且为所有用户激活产品。
  2. 用户(具有或不具有管理员权限)激活产品。激活存储在以用户为中心的位置(每用户app.config,HKCU等)。优点是用户不必是管理员。缺点是,如果有6个用户使用计算机,则每个用户都必须激活产品。他们每个都可以重复使用相同的序列,但他们仍然必须输入它。
  3. 这真的是权衡吗?如果是的话,其他人做了什么?作为开发人员,我习惯于成为本地管理员,但在现实世界中,我不希望我的许多企业用户成为本地管理员,这使我倾向于选项2.计算机是否经常不共享我不应该担心吗?

    同样,我不是在询问如何实际注册计算机 - 我并不担心。我只是要将所提供的密钥校验一下并给予批准,因为我希望尽可能无创。

6 个答案:

答案 0 :(得分:7)

我建议使用不需要管理员权限的解决方案。许多用户,特别是在共享环境中,将不具备这些权利,并且无法方便地找到任何人。

此外,未来几年,我认为随着安全状况的改善,在您使用的计算机上拥有管理员权限将变得越来越不寻常。

答案 1 :(得分:1)

注册表似乎是商业软件的一个好的解决方案。至少在我以前工作的地方,普通用户不是本地计算机管理员,因此每次安装都需要本地管理员帐户。这是一件好事,因为它可以减轻人们在商业计算环境中安装几乎所有东西时头痛的问题。权衡是当然,用户会因为无法安装东西或必须联系支持人员而感到生气,但是嘿......:)

其他东西:

  • USB /其他类型的加密狗(ala old 3DMax)
  • 普通的旧文本文件(ala 移动设备上的Garmin GPS软件)
  • 对密码进行编码/将密钥重写为 二进制文件或二进制文件的一部分 (在旧DOS中做了这个技巧 天)
  • 通过网络将它们存储在您自己的数据库中(ala EverQuest /其他MMORPG游戏)
  • 本地密钥db(我认为是ala MathLab)

答案 2 :(得分:1)

如何使用隔离的storrage为您的应用程序?

您可以在mashiene级别存储此信息以进行注册,并且配置更改可以在用户级别保留。

答案 3 :(得分:0)

我们将激活码保存到当前用户(HKCU)的注册表中,我们遇到的问题很少。我们的客户可以在合作网络上运行从家用电脑到瘦客户机的所有产品。

如果您的软件将在学校或其他教育环境中使用,则需要提供其他方法。它可以像单独的注册应用程序一样简单,它将节省所有用户的激活。您的软件必须进行两次注册表查找,但这是一个很小的代价。

答案 4 :(得分:0)

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

然而,它不是/或。所有用户都可以写入文件夹位置 - 例如ProgramData文件夹。关键是让Everyone可以读/写文件,这样无论用户如何都可以验证内容。

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

答案 5 :(得分:0)

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

如果您只需一步安装和注册,就不会出现问题。