2013-10-17 45 views
4

我正在写WPF中的Windows桌面应用程序。我需要添加一个激活过程,并想知道我是否有正确的想法这是使用Web服务的串行密钥激活的好概念吗?

这是我正在考虑实施的过程。这将是最好的解决办法

  • 当用户加载它在它

需要激活

  • 检查与激活码一个注册表项,如果没有应用激活密钥在注册表中他们被赋予一个激活页面
  • 在这里,他们将输入那里激活密钥,他们将从我们这里收到
  • 当用户点击激活我得到他们的硬盘的序列号和散列它
  • 我然后连接到我写检查 一个web服务 - 是否存在关键 - 是否有指定的硬盘序列哈希它 - 是主动
  • 如果把所有这些标准,我通过与HDD串行的WebService更新我的数据库,并标记为活动

已经激活(注册与激活密钥目前关键)

  • 获取他们的硬盘的序列号和散列它
  • 从注册表中检索
  • 连接的关键网络服务来检查注册表项存在,仍然活跃andassigned正确的HDD哈希
  • 如果是,我允许用户继续
  • 如果没有,那么我将完全删除注册表项并通知他们,他们需要重新激活软件,然后加载激活页面。

旁白从知道这是否做到这一点,我有一些额外的关注正确的方法:

的Web服务将需要保护 用户将必须在时,他们开始上网该程序,以便我可以检查web服务

任何人都可以给任何建议将不胜感激。我找不到任何答案。

回答

0

这个概念到目前为止还不错,但由于您要求用户始终在线,我还会使用RSA加密数据。

您的产品获取硬编码的公钥并将发送给服务器的数据发送回使用私有RSA密钥加密。 通过这种方式,您可以防止他们使用自制的激活服务器,该服务器不会做任何事情,而只会说“eveything是 - 好的,您已激活。“

0

听起来不错,但你必须记住:

  • 到web服务的连接必须使用SSL
  • Web服务之间的消息交换固定必须用某种形式的签署。私人/公共密钥,所以客户端知道消息真的来自服务器,用户不会创建自己的激活服务器。
  • 您的web服务必须位于具有高可用性的服务器上(您不希望愤怒的用户打电话,因为他们可以没有完成他们的工作)
  • HDD序列号可以更改。你可能想把它和别的东西结合起来。