使用Windows 7注册表在用户之间共享数据

时间:2010-07-29 18:28:27

标签: windows-7 registry

我有一个用XP编写的程序。我发现它在Win7上无法正常工作,因为非管理员不再可以写HLKM。

基本上,当您注册该程序时,许可信息应该进入注册表。该信息对计算机上的每个人都有效,而不仅仅是一个用户,所以我不想把它放在HKCU中。但是程序的任何副本都需要能够编辑该注册表(即使它是非管理员运行它),因为在某些情况下,它会从我的Web服务器获取更新的许可证信息(例如,如果注册表数据丢失或损坏,或者您当前的许可证已过期且需要查看我们是否已应用扩展程序。

如果它为每个启动程序的独特用户发送到Web服务器并不可怕,但它会导致一些烦人的问题,所以我宁愿它继续像在XP中那样工作。有没有办法在注册表中存储数据并仍然在Win7下共享,或者我是否必须开始考虑在驱动器上存储INI文件?

2 个答案:

答案 0 :(得分:1)

以下是我将如何构建它:您的设置升级并设置密钥。然后,如果他们的许可被破坏或诸如此类,则启用具有“修复许可证”或“更新许可证”等文本的按钮或菜单项。你在那个按钮或菜单项上放了一个盾牌。当他们单击它时,您使用ShellExecute启动一个单独的exe。那个exe有一个需要提升的清单。然后它可以写入注册表的受保护区域。应用程序的其余部分可以包含asInvoker的清单。

如果你希望它完全不可见,整个应用程序必须始终运行升级(烦人)或有时应用程序将启动另一个要求提升而不发出警告的exe - 在这种情况下,智能用户会说不。不那么隐蔽是一件好事。

答案 1 :(得分:0)

您是否可以获得安装程序,使您的注册表特定区域可供所有人编写?无论如何,安装程序需要以提升的权限运行,我希望 - 所以这似乎是一种理想的方法。

相关问题