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

问题描述 投票:0回答:2

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

我可以在没有管理员权限的情况下访问所有

HKEY_CURRENT_USER
(应用程序当前访问
HKEY_LOCAL_MACHINE
)吗?

registry privileges administrator
2个回答
109
投票

一般来说,非管理员用户对注册表具有以下访问权限:

读取/写入:

  • 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
中保存全局(对于所有用户)的设置。需要这样做的情况非常罕见,您应该避免这样做。问题是任何用户都可以“读取”这些内容,但只有管理员(或扩展为您的设置/安装程序)可以
set
它们。

其他常见的麻烦来源:您的应用程序不应写入

Program files
Windows
目录中的任何内容。如果您需要写入文件,有多种选择;描述所有这些将是一个更长的讨论。所有选项最终都会写入相关用户的子文件夹或
%USERPROFILE%
下的另一个子文件夹。

最后,您的申请应该远离

HKEY_CURRENT_CONFIG
。该配置单元保存了 99.9999% 的应用程序不需要查看的硬件配置、服务配置和其他项目(例如,它保存了当前的即插即用设备列表)。如果您需要从那里获得任何信息,大部分信息都可以通过其他地方支持的 API 获得。


3
投票

是的,您应该能够在没有管理员权限的情况下写入 HKEY_CURRENT_USER 下的任何位置。但这实际上是一个私人存储,该计算机上的其他用户无法访问,因此您不能在那里放置任何共享配置。

© www.soinside.com 2019 - 2024. All rights reserved.