如果没有pipe理员权限,您可以获得哪些registry访问?

我知道我们不应该使用registry来存储应用程序数据了,而是在更新Legacy应用程序(并且希望做最less的更改)时,允许非pipe理员允许使用哪些registryconfiguration单元?

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

一般来说,非pipe理员用户可以访问registry:

读/写:

  • HKEY_CURRENT_USER

只读:

  • HKEY_LOCAL_MACHINE
  • HKEY_CLASSES_ROOT (这只是一个链接HKEY_LOCAL_MACHINE\Software\Classes

可以逐个键改变其中一些权限,但这种情况非常less见。 你不应该担心这一点。

出于您的目的,您的应用程序应该将设置和configuration写入HKEY_CURRENT_USER 。 规范的地方是在HKEY_CURRENT_USER\Software\YourCompany\YourProduct\

您可以在HKEY_LOCAL_MACHINE保存全局(对于所有用户)的设置。 这是非常罕见的,你应该避免它。 问题是任何用户都可以“读取”这些内容,但是只有pipe理员(或扩展名,您的安装/安装程序)才能“设置”它们。

其他常见的麻烦来源:您的应用程序不应写入Program filesWindows目录中的任何内容。 如果您需要写入文件,手头上有几种select; 描述所有这些将是一个更长的讨论。 所有的选项最终都会写入子文件夹或其他用户下%USERPROFILE%

最后,你的应用程序应该保持HKEY_CURRENT_CONFIG 。 这个configuration单元拥有99.9999%的应用程序不需要看的硬件configuration,服务configuration和其他项目(例如,它拥有当前的即插即用设备列表)。 如果您需要从这里获得任何信息,大部分信息都可以通过其他地方的受支持的API获得。

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

Interesting Posts