【发布时间】:2010-10-02 08:02:53
【问题描述】:
这两个 API 非常相似,但不清楚它们的区别是什么以及何时应该使用它们(除了 LoadUserProfile 指定用于 CreateProcessAsUser,我没有使用它。我只是在模拟 Hive 访问)。
加载用户配置文件 http://msdn.microsoft.com/en-us/library/bb762281(VS.85).aspx
RegOpenCurrentUser http://msdn.microsoft.com/en-us/library/ms724894(VS.85).aspx
根据服务和注册表文章: http://msdn.microsoft.com/en-us/library/ms685145(VS.85).aspx 我们应该在模拟时使用 RegOpenCurrentUser。
但是,如果用户配置文件正在漫游,RegOpenCurrentUser 应该/应该做什么 - 它应该加载它吗?
据我从这些文档中得知,这两个 API 都为线程模拟的用户提供了 HKEY_CURRENT_USER 句柄。因此,它们都“加载”了配置单元,即将其锁定为数据库文件,并为注册表 API 提供了一个句柄。
看起来 LoadUserProfile 加载用户配置文件的方式与用户登录时的方式相同,而 RegOpenCurrentUser 没有 - 这是正确的吗?这两个 API 如何挂载 hive 的根本区别是什么(如果有的话)?
如果发生的情况有什么影响和区别(如果有的话)
当每个模拟句柄都在使用时,用户登录或注销?
调用每个匹配的关闭函数(RegCloseKey 和 UnloadUserProfile)时,用户已经登录?
【问题讨论】:
标签: c++ windows impersonation token roaming-profile