C++ 区别是什么:LoadUserProfile-vs-RegOpenCurrentUser
这两个API非常相似,但不清楚它们的区别是什么以及何时应该使用它们(除了LoadUserProfile被指定用于CreateProcessAsUser,我没有使用它。我只是模拟配置单元访问) LoadUserProfile RegOpenCurrentUser 根据《服务与注册》的文章: 我们应该在模拟时使用RegOpenCurrentUser 但是,如果用户配置文件是漫游的,RegOpenCurrentUser应该做什么?它应该加载吗 从这些文档中可以看出,这两个API都为线程模拟的用户提供了HKEY_当前用户的句柄。因此,它们都“加载”配置单元,即将其锁定为数据库文件,并为注册表API提供一个句柄 似乎LoadUserProfile加载用户配置文件的方式与用户登录时的加载方式相同,而RegOpenCurrentUser则不同,这是否正确?这两个API如何装载配置单元的根本区别(如果有的话)是什么 如果发生以下情况,会产生什么影响和区别(如果有)C++ 区别是什么:LoadUserProfile-vs-RegOpenCurrentUser,c++,windows,impersonation,token,roaming-profile,C++,Windows,Impersonation,Token,Roaming Profile,这两个API非常相似,但不清楚它们的区别是什么以及何时应该使用它们(除了LoadUserProfile被指定用于CreateProcessAsUser,我没有使用它。我只是模拟配置单元访问) LoadUserProfile RegOpenCurrentUser 根据《服务与注册》的文章: 我们应该在模拟时使用RegOpenCurrentUser 但是,如果用户配置文件是漫游的,RegOpenCurrentUser应该做什么?它应该加载吗 从这些文档中可以看出,这两个API都为线程模拟的用户提
HKEY\U CURRENT\U USER
的句柄后,您必须以某种方式调用UnloadUserProfile()
似乎LoadUserProfile加载用户配置文件的方式与用户登录时的加载方式相同,而RegOpenCurrentUser则不同,这是否正确
对
这两个API如何装载配置单元的根本区别(如果有的话)是什么
没有
如果发生以下情况,会产生什么影响和区别(如果有)
当每个模拟句柄都已在使用时,用户是否登录或注销
他们将拥有自己的打开和关闭手柄(同一个键)
调用每个匹配的关闭函数(RegCloseKey和UnloadUserProfile)时,用户是否已登录
同上。由于我目前正试图完成与您相同的任务,我想我会与过去几天的发现相呼应 我在WindowsXPSP3环境中工作,试图在两种不同的场景中使用CurrentUser注册表访问实现模拟 如果您遇到任何有用的东西,如果您能分享您的经验,我将不胜感激 管理员>有限用户和有限用户>管理员 到目前为止,我注意到的是(在WindowsXPSP3中) LoadUserProfile(): 仅当模拟用户启用了SeRestoreName和SeBackupName权限时才有效(仅为相关的有限用户启用这两个权限是不够的,因为它仍然失败,出现访问被拒绝错误-有关更多详细信息,请参阅我的StackOverflow问题)。到目前为止,我能够成功调用
LoadUserProfile()
的唯一方法是在开始模拟之前通过管理员帐户进行调用
RegOpenCurrentUser():
只有在用户配置文件已加载时才能“正常”工作,在我迄今为止的每次尝试中,我只能获得s-1-5-18配置单元的句柄,除非用户配置单元已加载并可在HKEY_下访问。用户已在不同情况下使用这两个功能 适用于尚未加载用户配置文件的情况 适用于已加载用户配置文件的情况,即,如果要访问已交互登录的用户的注册表配置单元 请注意,
LoadUserProfile
通常在没有模拟的情况下调用(因为您必须拥有使用它的管理员权限),但是RegOpenCurrentUser
必须通过模拟来调用