如果没有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 files
或Windows
目录中的任何内容。 如果您需要写入文件,手头上有几种select; 描述所有这些将是一个更长的讨论。 所有的选项最终都会写入子文件夹或其他用户下%USERPROFILE%
。
最后,你的应用程序应该保持HKEY_CURRENT_CONFIG
。 这个configuration单元拥有99.9999%的应用程序不需要看的硬件configuration,服务configuration和其他项目(例如,它拥有当前的即插即用设备列表)。 如果您需要从这里获得任何信息,大部分信息都可以通过其他地方的受支持的API获得。
是的,您应该可以在没有pipe理员权限的情况下写入HKEY_CURRENT_USER下的任何地方。 但是这实际上是一个私人商店,没有其他用户在这台机器上能够访问,所以你不能把任何共享的configuration。