没有管理员权限可以获得哪些注册表访问?

时间:2008-09-09 23:29:25

标签: registry privileges administrator

我知道我们不应该再使用注册表来存储应用程序数据了,但是在更新旧版应用程序时(并且希望进行最少的更改),哪些注册表配置单元是非管理员允许使用的?

我是否可以在没有管理员权限的情况下访问所有HKEY_CURRENT_USER(应用程序当前访问HKEY_LOCAL_MACHINE)?

2 个答案:

答案 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 filesWindows目录中的任何内容。如果您需要写入文件,手头有几个选项;描述所有这些将是一个较长的讨论。对于相关用户,所有选项最终都会在%USERPROFILE%下写入子文件夹或其他文件。

最后,您的应用应该不在HKEY_CURRENT_CONFIG之内。此配置单元包含硬件配置,服务配置和99.9999%应用程序不需要查看的其他项目(例如,它包含当前的即插即用设备列表)。如果您需要任何内容​​,大部分信息都可以通过其他地方支持的API获得。

答案 1 :(得分:3)

是的,您应该能够在没有管理员权限的情况下写入HKEY_CURRENT_USER下的任何地方。但这实际上是一个私人商店,这台机器上没有其他用户可以访问,所以你不能在那里放任何共享配置。