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

Kri*_*son 50 registry privileges administrator

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

我可以HKEY_CURRENT_USERHKEY_LOCAL_MACHINE没有管理员权限的情况下访问所有(当前访问的应用程序)

Eur*_*lli 84

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

读/写:

  • 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获得.

  • 谢谢.在MSDN上保存了一个没有结果的搜索,虽然链接会很好.此问答需要更多曝光. (3认同)
  • `HKEY_CLASSES_ROOT` 是 HKLM\SOFTWARE\Classes 和 HKCU\SOFTWARE\Classes 的合并视图,根据 https://learn.microsoft.com/en-us/windows/desktop/winprog64/shared-registry-keys。因此,根据合并源允许写入。并且您可以创建新条目,例如您可以创建一个没有管理员权限的自定义协议处理程序(刚刚测试过)。 (2认同)