2012-03-09 5 views
5

Я создаю пользователя с API NetUserAdd. Он успешно возвращается, пользователь имеет папку пользователя, и я могу видеть имя пользователя с wmic useraccount get name. Однако созданный пользователь не отображается под панелью управления или на экране входа в систему. Я предполагаю, что мне нужно добавить пользователя в какую-то группу, но я не знаю, что и как.NetUserAdd() успешно, но пользователь «невидим»

Вот как я создаю пользователя:

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

Как я могу заставить пользователя отображается на экране входа в систему?

+1

Вы имеете в виду что-то вроде этого http://stackoverflow.com/q/93771/960757? – TLama

+0

Это не сработало, к сожалению. –

+0

Кроме того, ни у кого из других пользователей не было записи, поэтому должен быть другой способ. –

ответ

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); 
6

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

EDIT: Я понял, что предоставляю метод для .NET. См. Это example для C++.

+0

Так называется ли группа «пользователи»? И нет, мне не нужно p/invoke, см. Теги :) –

+0

Да, BUILTIN \ Users. Теперь я отредактировал свой ответ. –

+0

Да, спасибо за усилия. Пожалуйста, будьте терпеливы, я не работаю в выходные дни :). Я вернусь к вам, когда проведу его в понедельник. –

Смежные вопросы