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

我可以访问所有 HKEY_CURRENT_USER (应用程序当前访问 HKEY_LOCAL_MACHINE)没有管理员权限?

有帮助吗?

解决方案

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

读/写:

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top