7

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

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

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

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

结果,我只获得登录用户的配置文件。

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

是设计使然,还是错误?

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

可能是权限中的东西吗?也许信息在那里但是当用户未登录时它被隐藏了?是否有标志或其他东西可以用来读取未登录用户的个人资料?

4

2 回答 2

7

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

reg load HKU\Steven C:\Users\Steven\ntuser.dat

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

reg unload HKU\Steven
于 2014-08-20T06:47:04.380 回答
6

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

然后你需要重新设计你的应用程序。你所要求的是不可能的。

来自Raymond Chen 的博客文章“小心漫游用户配置文件”

[Y] 你不能只是浏览 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 注册表项,期望找到所有用户配置文件,甚至可能修改它们,因为本地计算机上的用户配置文件副本可能不是权威的。

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

您根本不能依赖其他用户在本地存储的配置文件数据你最好假装它甚至不存在。

于 2012-07-11T13:06:13.377 回答