HKEY_USERS仅包含已登录的用户

use*_*541 5 c# windows-8

我正在写一个c#应用程序.

作为我的应用程序的一部分,我需要阅读用户的个人资料.

为了获得所有用户,我正在使用Registry.Users.GetSubKey().

问题是在Windows 8上HKEY_USERS只包含登录用户!(当有2个用户登录时,我会看到2个用户HKEY_USERS,但是如果其中一个用户将退出,那么将只有1个用户HKEY_USERS)

因此,我只为登录用户获取配置文件.

我试图搜索整个注册表以找到数据保存的位置,但我无法在任何地方找到这些信息....当用户注销时,信息似乎消失了.

是设计还是错误?

保存数据的位置 - 它必须在注册表中,但我找不到它...

它可能是权限中的东西吗?也许信息存在但是当用户没有登录时它被隐藏了?是否有标志或我可以用来读取未登录用户的配置文件?

小智 7

这可能不适用于所有情况,但符合我的需求。加载注册表配置单元

reg load HKU\Steven C:\Users\Steven\ntuser.dat
Run Code Online (Sandbox Code Playgroud)

读取必要的数据,然后卸载

reg unload HKU\Steven
Run Code Online (Sandbox Code Playgroud)


Joe*_*ite 6

作为我的应用程序的一部分,我需要阅读用户的个人资料.

然后,您需要重新设计您的应用程序.你要求的是不可能的.

来自Raymond Chen的博客文章"谨防漫游用户个人资料":

[Y]你不能只通过HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList注册表键来查找所有用户配置文件,甚至可能修改它们,因为本地计算机上的用户配置文件的副本可能不是权威的.

您在本地计算机上看到的与其他用户的配置文件相关的任何内容 - 无论是在HKEY_USERS下,还是在C:\ Users下的配置文件目录中 - 都只是他们上次登录该计算机时的本地缓存.在真实的数据,向上的最新数据,在某处存储在域控制器上.

您根本无法依赖其他用户的本地存储的个人资料数据.你最好假装它甚至不存在.