gpt4 book ai didi

c - 新创建的用户上的 RegOpenCurrentUser(KEY_WRITE)

转载 作者:行者123 更新时间:2023-11-30 15:04:38 26 4
gpt4 key购买 nike

在我成功创建新用户,将用户添加到内置管理员组后,我想编辑新创建的用户的注册表(该程序是一个提升为管理员的程序)。我调用了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()。您可以改为使用 PROFILEINFOhProfile 字段LoadUserProfile() 返回:

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).

关于c - 新创建的用户上的 RegOpenCurrentUser(KEY_WRITE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com