2012-03-14 36 views
0

我试图将用户注册数据保存到c#注册表中。但没有管理权限,我无法访问HKEY_LOCAL_MACHINE。我没有管理员权限,所以我决定将其存储在HKEY_CURRENT_USER分支中。在c#中注册表的HKEY_CURRENT_USER分支存储授权信息

这种方法是否正确,即如果用户注册产品并且他在Windows中切换帐户,则应用程序将被取消注册。商业软件是否使用HKEY_CURRENT_USER分支来存储用户的许可证密钥。由于许可证是针对单个用户的,因此如果我只允许单个用户(Windows用户)使用该密钥以防止其他用户使用该密钥,那么会出现问题。

回答

3

为什么不节省一些key文件与用户特定的许可协议中

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

运行程序的用户可以访问由系统本身授予的位置。

0

当用户激活产品时,您可以提升进程,以便允许对HKLM的写入访问。

根据您的许可证模式,我建议每台机器注册产品,因为这样不同的用户都可以使用许可证。

但是,如果您只想让原始用户使用许可证,那么HKCU就没有问​​题。

0

我倾向于远离注册表,除非我可以帮助它。如果您销售您的产品,这种方式很容易被盗版,尽管可能没有可能的防盗版方式,我不推荐使用注册表。

我之前使用过的一种方法是将许可证密钥保存在应用程序的app.config中。然后它与应用程序一起编译,所以你没有任何特定的计算机依赖。当你的应用程序被激活时,密钥被保存在配置文件中,并且在应用程序的每次开启时,它只是执行一次布尔检查来查看它是否有效。

这种方式也会让精通计算机的用户更难以盗用您的软件。

希望这会有所帮助。