2

我正在使用 C# 并且有一个用户输入的密钥来激活我的程序。我不希望用户在输入密钥后就能够看到它。你对如何/在哪里存储它有什么建议吗?

4

5 回答 5

5

您可以将密钥保存为单独的文件。加密密钥并保存。因此,即使用户试图篡改它,您也可以停用该应用程序。

您可能对 codeplex 中的这个项目感兴趣:http: //licenser.codeplex.com/

编辑:一些问题供您检查。

  1. 我应该在哪里存储我的激活密钥

  2. 生成软件激活码的最佳方法?

  3. .NET 应用程序的最佳激活密钥软件?

于 2009-09-01T06:15:30.863 回答
0

您当然可以将密钥存储在可执行文件的资源中,它的过程相当长,有几个可用的 API,如 OpenResource、GetResourceData 和 UpdateResource,除非您安装了 Visual Studio 工具,否则无法轻松访问资源。

但是您不能修改当前正在运行的可执行文件的资源,但是您可以创建不同的激活程序来加载您的主要可执行文件,修改资源并保存它。

于 2009-09-01T06:26:37.877 回答
0

假设一台 Windows 机器正在运行您的应用程序,您还可以使用注册表来存储您的加密密钥(可能是 MD5?)。

这样,它不在用户可以查看的“文件”中(尽管用户可以查看/更改/删除它)。
在我看来,用户(标准用户......)往往不会查看注册表 - 您可以在那里隐藏您的密钥。

实际上,@Shoban 的第一个链接where-should-i-store-my-applications-activation-key有更多关于这个问题的讨论 - 你应该阅读它......

于 2009-09-01T06:43:32.817 回答
0

我知道这更像是加密密钥 - 但是Windows 密钥容器呢?

于 2009-09-01T06:59:43.177 回答
0

忘记试图掩盖您保存许可证密钥的位置 - 您将无法阻止确定的用户,并且如果您尝试将许可证信息存储在“奇怪”的地方,您只会惹恼系统管理员。忘记尝试存储在您正在运行的可执行文件中的所有内容,这很难做到万无一失,并且会触发大量防病毒软件。

如果您想要防篡改的东西,请选择其中一种商业解决方案;抱歉,如果这听起来很苛刻,但是考虑到您要问这样的问题,您不会想出任何难以破解的东西。

于 2009-09-01T07:21:04.193 回答