在我成功创建一个新用户后,将用户添加到内置管理员组,我想编辑新创建的用户的注册表(这个程序是一个提升的管理员程序)。我调用了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。