NetUserAdd () успешно, но пользователь «невидим» - PullRequest
5 голосов
/ 09 марта 2012

Я создаю пользователя с 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 ]

6 голосов
/ 09 марта 2012

Вы создали пользователя, но вам нужно добавить его в группу пользователей, используя NetLocalGroupAddMembers.

РЕДАКТИРОВАТЬ: Просто понял, что я предоставляю метод для .NET. Смотрите этот пример для C ++.

2 голосов
/ 13 марта 2012

Пользователь не появлялся на экране приветствия, поскольку он не был добавлен в группу «Пользователи». Вот как это сделать:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...