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

时间:2020-03-05 18:50:26  来源:igfitidea点击:

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

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

解决方案

回答

是的,我们应该能够在没有管理员权限的情况下写到HKEY_CURRENT_USER下的任何位置。但这实际上是一个私有存储,该机器上的其他用户将无法访问,因此我们不能在其中放置任何共享配置。

回答

通常,非管理员用户对此注册表具有以下访问权限:

读/写至:

  • 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"中保存全局设置(对所有用户而言)。很少需要这样做,我们应该避免这样做。问题在于,任何用户都可以"读取"这些内容,但是只有管理员(或者扩展名,安装/安装程序)可以"设置"它们。

其他常见的问题根源:应用程序不应写入"程序文件"或者" Windows"目录中的任何内容。如果我们需要写入文件,则有几种选择。描述所有这些将是一个更长的讨论。所有这些选项最终都将写入有关用户的子文件夹或者在%USERPROFILE%下的另一个文件夹中。

最后,应用程序应远离" HKEY_CURRENT_CONFIG"。此配置单元包含99.9999%的应用程序不需要查看的硬件配置,服务配置和其他项目(例如,它包含当前的即插即用设备列表)。如果我们从那里需要任何东西,大多数信息可以通过其他地方受支持的API获得。