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

11
我写了一个应用程序,想添加注册密钥/序列号(我很注重最小程度的不便-例如这篇Eric Sink文章中的#4)。我的问题是关于在应用程序注册后存储"激活"的位置。据我所知,我需要在将密钥存储在公共位置(所有用户都可以读取,但需要管理员权限保存)和存储每个用户的激活之间进行权衡(但是计算机上的每个用户都必须独立激活)。这给了我两个选择:
  1. 某个具有本地管理员权限的用户激活产品。激活信息存储在HKLM、程序文件夹或其他所有用户都可以读取的地方,产品对所有用户都已激活。
  2. 一个用户(有或没有管理员权限)激活产品。激活信息存储在某个用户为中心的位置(per-user app.config、HKCU等)。好处是用户不需要成为管理员。缺点是如果有6个用户使用计算机,则每个用户都必须激活该产品。他们可以重复使用相同的序列号,但仍然需要输入它。
这真的是一种权衡吗?如果是,其他人又做了什么呢?作为开发人员,我习惯于人们是本地管理员,但在现实世界中,我不指望我的企业用户中有很多是本地管理员,这让我倾向于选择第二个选项。计算机是否共享得足够少,我不必担心呢?

再次强调,我不是在询问如何物理注册计算机 - 我不担心这个。我只会校验提供的密钥并给出许可,因为我希望尽可能少地干预。

6个回答

7
我建议使用不需要管理员权限的解决方案。许多用户,特别是在共享环境中,将没有这些权限,并且不能方便地找到任何拥有这些权限的人。
此外,未来几年,我认为在使用计算机时拥有管理员权限将越来越不寻常,因为安全情况正在改善。

但是在同一台计算机上为不同的用户反复注册相同的应用程序真的很烦人!我认为这是应用程序设计上的缺陷。 - Vilx-
5
我们使用的一个解决方案是将激活信息放入当前用户的注册表中,然后如果有管理员权限,也将其放入本地机器中。如果有管理员权限,则不会干扰计算机上任何共享用户。如果没有管理员权限,则会要求每个用户进行一次激活。 - Rik Heywood
1
我喜欢至少将其存储在HKCU中的想法,如果用户具有管理员权限,则还可以存储在HKLM中。这似乎是最小的不便 - 注册不需要管理员权限,但如果存在管理员权限,则会利用它们。 - SqlRyan

2

在商业软件中,注册表似乎是一个可以接受的解决方案。至少在我之前工作的地方,普通用户不会是本地计算机管理员,因此每次安装都需要本地管理员帐户。这是一件好事,因为它将减轻您的支持人员的头疼,免得人们在您的企业计算环境中安装任何东西。当然,交换是,用户会感到生气,他们不能安装软件或者必须联系支持人员来完成,但是嘿...:)

其他方法:

  • USB / 其他类型的加密狗 (ala old 3DMax)
  • 简单的文本文件 (ala Garmin GPS 手机软件)
  • 将其编码/重写密钥进入您的二进制文件或者部分二进制文件(在旧的DOS时代就使用过这个技巧)
  • 通过网络将它们存储在您自己的数据库中(ala EverQuest / 其他MMORPG游戏)
  • 本地密钥数据库 (ala MathLab I think)

1

你考虑过使用隔离存储来为你的应用程序提供服务吗?

这样一来,你就可以在机器级别上存储注册信息,并且配置更改可以在用户级别上持久化。


你能举个例子来说明我该如何完成这个任务吗?我对这个术语不太熟悉,所以我想确保我理解了你的想法。 - SqlRyan
你可以在这里找到一个例子: http://msdn.microsoft.com/zh-cn/library/system.io.isolatedstorage.isolatedstoragefilestream(VS.71).aspx - Heiko Hatzfeld

0

一般来说,大多数计算机都是由单个用户使用的(或多个人仍在使用相同的用户账户)。因此,基于用户的存储通常都能正常工作。

然而,这不是非此即彼的。有些文件夹位置可以被所有用户写入 - 比如ProgramData文件夹。关键是使文件对所有用户可读/可写,这样您就可以验证内容而不考虑用户。

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


0

你应该保持一致。如果安装程序需要管理员权限,那么要求注册时也需要管理员权限并不过分。同样地,如果你在没有管理员权限的情况下成功安装了程序,那么注册时也可以不需要。

如果你能够在一步完成安装和注册,这个问题就不会存在。


0

我们将激活码保存到当前用户的注册表(HKCU)中,这样做几乎没有出现过问题。我们的客户使用的设备从家用电脑到企业网络上的瘦客户端都有。

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


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