NetUserAdd()成功,但用户“隐身”

时间:2012-03-09 14:31:43

标签: c++ windows winapi user-accounts

我正在使用NetUserAdd API创建用户。它成功返回,用户有一个User文件夹,我可以看到wmic useraccount get name的用户名。但是,创建的用户在控制面板下或登录屏幕上不可见。我假设我需要将用户添加到某个组,但我不知道哪个或如何。

以下是我创建用户的方式:

USER_INFO_1 user_info;
ZeroMemory(&user_info, sizeof(user_info));
user_info.usri1_name = userName;
user_info.usri1_password = password;
user_info.usri1_priv = USER_PRIV_USER;
user_info.usri1_flags = UF_SCRIPT | UF_DONT_EXPIRE_PASSWD;

DWORD dwLevel = 1;
DWORD dwError = 0;
NET_API_STATUS nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&user_info, &dwError);

如何在登录屏幕上显示用户?

2 个答案:

答案 0 :(得分:6)

您已创建用户,但需要使用NetLocalGroupAddMembers将其添加到用户组。

编辑:刚刚意识到我正在为.NET提供方法。有关C ++,请参阅此example

答案 1 :(得分:2)

用户未显示在欢迎屏幕上,因为它未添加到“用户”组。这是怎么做的:

LOCALGROUP_MEMBERS_INFO_3 lmi3;
ZeroMemory(&lmi3, sizeof lmi3);
lmi3.lgrmi3_domainandname = user_info.usri1_name;
DWORD err = NetLocalGroupAddMembers(NULL, L"Users", 3, (LPBYTE) &lmi3, 1);