我正在使用C#并拥有用户输入的密钥以激活我的程序。我不希望用户在输入密钥后能够看到密钥。您对如何/在何处储存它有任何建议吗?
答案 0 :(得分:5)
您可以将密钥另存为单独的文件。加密密钥并保存。因此,即使用户试图篡改它,您也可以停用该应用程序。
您可能对codeplex中的这个项目感兴趣:http://licenser.codeplex.com/
编辑:有些问题需要您检查。
答案 1 :(得分:1)
忘记尝试隐藏保存许可证密钥的位置 - 您将无法阻止确定的用户,如果您尝试将许可证信息存储在“奇怪”的位置,您将只会惹恼系统管理员。忘记尝试存储在正在运行的可执行文件中的所有内容,很难以万无一失的方式执行,并会触发大量的防病毒软件。
如果您想要防篡改的东西,请选择其中一种商业解决方案;抱歉,如果这听起来很苛刻,但是你 会想出任何甚至远远难以打破的东西,考虑到你在问这样的问题。
答案 2 :(得分:0)
你当然可以在Excutable的资源中存储一个密钥,它的程序非常长,有几个API可用,比如OpenResource,GetResourceData和UpdateResource,除非你安装了visual studio工具,否则资源不容易访问。
但您无法修改当前正在运行的可执行文件的资源,但您可以创建不同的激活程序,可以加载主可执行文件,修改资源并保存它。
答案 3 :(得分:0)
假设Windows计算机正在运行您的应用程序,您还可以使用注册表来存储加密密钥(可能是MD5?)。
这样它就不在用户可以查看的“文件”中(尽管可以被用户查看/更改/删除)。
在我看来,用户(标准的...)往往不会在注册表中查找 - 您可以在那里隐藏您的密钥。
实际上,@ Shoban的第一个链接where-should-i-store-my-applications-activation-key对这个问题有更多的讨论 - 你应该阅读它......
答案 4 :(得分:0)
我知道这更像是加密密钥 - 但是windows key container呢?