c – 有什么区别:LoadUserProfile -vs- RegOpenCurrentUser

这两个API非常相似,但不清楚区别是什么以及何时应该使用它们(除了指定LoadUserProfile与我不使用的CreateProcessAsUser一起使用.我只是模仿hive访问).

LoadUserProfile
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的句柄.因此,它们都“加载”hive,即将其锁定为数据库文件,并为注册表API提供句柄.

似乎LoadUserProfile以与用户登录时相同的方式加载用户配置文件,而RegOpenCurrentUser则不是 – 这是正确的吗?这两个API如何安装配置单元的根本区别(如果有的话)是什么?

IF之间发生的影响和差异(如果有的话)是什么?

>用户登录或注销时,这些模拟句柄中的每一个都已被使用?
>当调用每个匹配的关闭函数(RegCloseKey和UnloadUserProfile)时,用户已经登录?

最佳答案

But what does/should RegOpenCurrentUser do if the user profile is roaming – should it load it?

它不会加载配置文件.可以这样思考:如果确实如此,那么在完成HKEY_CURRENT_USER的句柄后,你必须以某种方式调用UnloadUserProfile().

It might seem that LoadUserProfile loads the user profile in the same way as the User does when he/she logs on, whereas RegOpenCurrentUser does not – is this correct?

是.

What is the fundamental difference (if any) in how these two APIs mount the hive?

没有.

What are the implications and differences (if any) between what happens IF
A user logs-on or logs-off while each of these impersonated handles is already in use?

他们将获得自己的手柄(相同的钥匙)打开和关闭.

A user is already logged-on when each matching close function (RegCloseKey and UnloadUserProfile) is called?

同上.

点赞