2012-03-09 11 views
5

Estoy creando un usuario con la API NetUserAdd. Vuelve con éxito, el usuario tiene una carpeta de usuario y puedo ver el nombre de usuario con wmic useraccount get name. Sin embargo, el usuario creado no es visible en el panel de control ni en la pantalla de inicio de sesión. Supongo que necesito agregar el usuario a un grupo pero no sé cuál o cómo.NetUserAdd() exitoso, pero el usuario es "invisible"

Aquí es cómo crear el usuario:

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

¿Cómo puedo hacer que el usuario ve en la pantalla de inicio de sesión?

+1

¿Te refieres a algo así http://stackoverflow.com/q/93771/960757? – TLama

+0

Eso no funcionó, desafortunadamente. –

+0

Además, ninguno de los otros usuarios tenía una entrada allí, por lo que debe haber otra forma. –

Respuesta

2

El usuario no aparecía en la pantalla de bienvenida porque no se había agregado al grupo de usuarios. Así es como hacerlo:

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

Ha creado el usuario pero necesita agregarlo al grupo de usuarios usando NetLocalGroupAddMembers.

EDIT: Acabo de dar cuenta de que estaba proporcionando el método para .NET. Consulte esto example para C++.

+0

¿El grupo se llama "usuarios"? Y no, no necesito p/invoke, vea las etiquetas :) –

+0

Sí, BUILTIN \ Users. He editado mi respuesta ahora. –

+0

Sí, gracias por el esfuerzo. Por favor ten paciencia, no estoy trabajando los fines de semana :). Te llamaré cuando lo revise el lunes. –

Cuestiones relacionadas