新创建用户的 RegOpenCurrentUser(KEY_WRITE)
RegOpenCurrentUser(KEY_WRITE) on newly created user
成功创建新用户后,将用户添加到内置管理员组,我想编辑新创建的用户的注册表(该程序是一个提升为管理员的程序)。我调用了 NetUserAdd()
、NetLocalGroupAddMembers()
、LogonUser()
,然后,最后 LoadUserProfile()
所以用户的目录存在。
请原谅草率的代码,但这就是我之后所做的:
DuplicateTokenEx(hToken,TOKEN_ALL_ACCESS,&sa,SecurityImpersonation,TokenPrimary,&hNewToken);
ImpersonateLoggedOnUser(hNewToken);
HKEY hKey;
LSTATUS stat = RegOpenCurrentUser(KEY_READ|KEY_WRITE, &hKey);
// stat is 5 (ACCESS_DENIED) when KEY_WRITE is added, it
// returns 0 (ERROR_SUCCESS) when it's just KEY_READ
RegCloseKey(hKey);
RevertToSelf();
CloseHandle(hNewToken);
错误在 RegOpenCurrentUser()
行。当我要求写入该用户的 HKU 注册表时出错。如果我只使用 KEY_READ
,它工作得很好
这甚至可能是我想要做的吗?用户的注册表配置单元是否已经创建?还是用户必须亲自登录才能创建它?
最终我想做的是为新用户创建 GPO。
如果您已经使用 LoadUserProfile()
加载了用户配置文件,则根本不需要使用 RegOpenCurrentUser()
。您可以改为使用 PROFILEINFO
的 hProfile
字段,即 LoadUserProfile()
returns:
hProfile
Type: HANDLE
A handle to the HKEY_CURRENT_USER registry subtree.
...
When the LoadUserProfile call returns successfully, the hProfile member receives a registry key handle opened to the root of the user's subtree, opened with full access (KEY_ALL_ACCESS).
成功创建新用户后,将用户添加到内置管理员组,我想编辑新创建的用户的注册表(该程序是一个提升为管理员的程序)。我调用了 NetUserAdd()
、NetLocalGroupAddMembers()
、LogonUser()
,然后,最后 LoadUserProfile()
所以用户的目录存在。
请原谅草率的代码,但这就是我之后所做的:
DuplicateTokenEx(hToken,TOKEN_ALL_ACCESS,&sa,SecurityImpersonation,TokenPrimary,&hNewToken);
ImpersonateLoggedOnUser(hNewToken);
HKEY hKey;
LSTATUS stat = RegOpenCurrentUser(KEY_READ|KEY_WRITE, &hKey);
// stat is 5 (ACCESS_DENIED) when KEY_WRITE is added, it
// returns 0 (ERROR_SUCCESS) when it's just KEY_READ
RegCloseKey(hKey);
RevertToSelf();
CloseHandle(hNewToken);
错误在 RegOpenCurrentUser()
行。当我要求写入该用户的 HKU 注册表时出错。如果我只使用 KEY_READ
这甚至可能是我想要做的吗?用户的注册表配置单元是否已经创建?还是用户必须亲自登录才能创建它?
最终我想做的是为新用户创建 GPO。
如果您已经使用 LoadUserProfile()
加载了用户配置文件,则根本不需要使用 RegOpenCurrentUser()
。您可以改为使用 PROFILEINFO
的 hProfile
字段,即 LoadUserProfile()
returns:
hProfile
Type: HANDLEA handle to the HKEY_CURRENT_USER registry subtree.
...
When the LoadUserProfile call returns successfully, the hProfile member receives a registry key handle opened to the root of the user's subtree, opened with full access (KEY_ALL_ACCESS).