我知道我们不应该再使用注册表来存储应用程序数据了,但是在更新旧版应用程序时(并且希望进行最少的更改),哪些注册表配置单元是非管理员允许使用的?
我是否可以在没有管理员权限的情况下访问所有HKEY_CURRENT_USER
(应用程序当前访问HKEY_LOCAL_MACHINE
)?
答案 0 :(得分:78)
通常,非管理员用户具有对注册表的访问权限:
读/写:
HKEY_CURRENT_USER
只读:
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
(这只是链接到HKEY_LOCAL_MACHINE\Software\Classes
)可以逐个键地更改其中一些权限,但这种情况极为罕见。你不应该担心这一点。
出于您的目的,您的应用程序应该将设置和配置写入HKEY_CURRENT_USER
。规范的地方是HKEY_CURRENT_USER\Software\YourCompany\YourProduct\
您可能会在HKEY_LOCAL_MACHINE
中保留全局(适用于所有用户)的设置。很少需要这样做,你应该避免它。问题是任何用户都可以“阅读”这些内容,但只有管理员(或扩展名,您的安装/安装程序)可以“设置”它们。
其他常见问题来源:您的应用程序不应该写入Program files
或Windows
目录中的任何内容。如果您需要写入文件,手头有几个选项;描述所有这些将是一个较长的讨论。对于相关用户,所有选项最终都会在%USERPROFILE%
下写入子文件夹或其他文件。
最后,您的应用应该不在HKEY_CURRENT_CONFIG
之内。此配置单元包含硬件配置,服务配置和99.9999%应用程序不需要查看的其他项目(例如,它包含当前的即插即用设备列表)。如果您需要任何内容,大部分信息都可以通过其他地方支持的API获得。
答案 1 :(得分:3)
是的,您应该能够在没有管理员权限的情况下写入HKEY_CURRENT_USER下的任何地方。但这实际上是一个私人商店,这台机器上没有其他用户可以访问,所以你不能在那里放任何共享配置。