Función NetUserSetInfo (lmaccess.h)
La función NetUserSetInfo establece los parámetros de una cuenta de usuario.
Sintaxis
NET_API_STATUS NET_API_FUNCTION NetUserSetInfo(
[in] LPCWSTR servername,
[in] LPCWSTR username,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
Parámetros
[in] servername
Puntero a una cadena constante que especifica el nombre DNS o NetBIOS del servidor remoto en el que se va a ejecutar la función. Si este parámetro es NULL, se usa el equipo local.
[in] username
Puntero a una cadena constante que especifica el nombre de la cuenta de usuario para la que se va a establecer información. Para obtener más información, vea la sección Comentarios que se muestra más adelante.
[in] level
Nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
|
Especifica el nombre de la cuenta de usuario. El parámetro buf apunta a una estructura de USER_INFO_0 . Use esta estructura para especificar un nuevo nombre de grupo. Para obtener más información, vea la sección Comentarios que se muestra más adelante. |
|
Especifica información detallada sobre la cuenta de usuario. El parámetro buf apunta a una estructura USER_INFO_1 . |
|
Especifica la información de nivel uno y atributos adicionales sobre la cuenta de usuario. El parámetro buf apunta a una estructura de USER_INFO_2 . |
|
Especifica la información de nivel dos y atributos adicionales sobre la cuenta de usuario. Este nivel solo es válido en los servidores. El parámetro buf apunta a una estructura USER_INFO_3 . Tenga en cuenta que se recomienda usar USER_INFO_4 en su lugar. |
|
Especifica la información de nivel dos y atributos adicionales sobre la cuenta de usuario. Este nivel solo es válido en los servidores. El parámetro buf apunta a una estructura USER_INFO_4 . |
|
Especifica un LAN Manager 2 cifrado unidireccional. Contraseña compatible con x. El parámetro buf apunta a una estructura USER_INFO_21 . |
|
Especifica información detallada sobre la cuenta de usuario. El parámetro buf apunta a una estructura USER_INFO_22 . |
|
Especifica una contraseña de usuario. El parámetro buf apunta a una estructura USER_INFO_1003 . |
|
Especifica un nivel de privilegios de usuario. El parámetro buf apunta a una estructura USER_INFO_1005 . |
|
Especifica la ruta de acceso del directorio principal para el usuario. El parámetro buf apunta a una estructura USER_INFO_1006 . |
|
Especifica un comentario que se va a asociar a la cuenta de usuario. El parámetro buf apunta a una estructura USER_INFO_1007 . |
|
Especifica los atributos de la cuenta de usuario. El parámetro buf apunta a una estructura USER_INFO_1008 . |
|
Especifica la ruta de acceso del archivo de script de inicio de sesión del usuario. El parámetro buf apunta a una estructura USER_INFO_1009 . |
|
Especifica los privilegios de operador del usuario. El parámetro buf apunta a una estructura USER_INFO_1010 . |
|
Especifica el nombre completo del usuario. El parámetro buf apunta a una estructura USER_INFO_1011 . |
|
Especifica un comentario que se va a asociar al usuario. El parámetro buf apunta a una estructura USER_INFO_1012 . |
|
Especifica los nombres de las estaciones de trabajo desde las que el usuario puede iniciar sesión. El parámetro buf apunta a una estructura USER_INFO_1014 . |
|
Especifica cuándo expira la cuenta de usuario. El parámetro buf apunta a una estructura USER_INFO_1017 . |
|
Especifica las horas durante las que el usuario puede iniciar sesión. El parámetro buf apunta a una estructura de USER_INFO_1020 . |
|
Especifica el código de país o región del usuario. El parámetro buf apunta a una estructura USER_INFO_1024 . |
|
Especifica el identificador relativo de un grupo global que representa al usuario inscrito. El parámetro buf apunta a una estructura de USER_INFO_1051 . |
|
Especifica la ruta de acceso al perfil de un usuario de red. El parámetro buf apunta a una estructura USER_INFO_1052 . |
|
Especifica la letra de unidad asignada al directorio principal del usuario. El parámetro buf apunta a una estructura USER_INFO_1053 . |
[in] buf
Puntero al búfer que especifica los datos. El formato de estos datos depende del valor del parámetro level . Para obtener más información, consulte Búferes de funciones de administración de red.
[out] parm_err
Puntero a un valor que recibe el índice del primer miembro de la estructura de información del usuario que provoca ERROR_INVALID_PARAMETER. Si este parámetro es NULL, el índice no se devuelve en caso de error. Para obtener más información, vea la sección Comentarios que se muestra más adelante.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es NERR_Success.
Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
|
El usuario no tiene acceso a la información pedida. |
|
Uno de los parámetros de función no es válido. Para obtener más información, vea la sección Comentarios que se muestra más adelante. |
|
El nombre de equipo no es válido. |
|
La operación solo se permite en el controlador de dominio principal del dominio. |
|
No se permite la operación en grupos especiales especificados, que son grupos de usuarios, grupos de administradores, grupos locales o grupos invitados. |
|
No se permite la operación en la última cuenta administrativa. |
|
El nombre del recurso compartido o la contraseña no son válidos. |
|
La contraseña es más corta de la necesaria. (La contraseña podría también ser demasiado larga, demasiado reciente en su historial de cambios, no tener cantidad suficiente de caracteres únicos o no cumplir con algún otro requisito de la directiva de contraseñas). |
|
No se encontró el nombre de usuario. |
Comentarios
Si está programando para Active Directory, puede llamar a determinados métodos de interfaz de servicio de Active Directory (ADSI) para lograr la misma funcionalidad que puede lograr llamando a las funciones de usuario de administración de red. Para obtener más información, consulte IADsUser e IADsComputer.
Si llama a esta función en un controlador de dominio que ejecuta Active Directory, se permite o se deniega el acceso en función de la lista de control de acceso (ACL) para el objeto protegible. La ACL predeterminada solo permite que los administradores de dominio y los operadores de cuenta llamen a esta función. En un servidor miembro o estación de trabajo, solo los administradores y los usuarios avanzados pueden llamar a esta función. Para obtener más información, consulte Requisitos de seguridad para las funciones de administración de red. Para obtener más información sobre las ACL, los ACL y los tokens de acceso, consulte Access Control Modelo.
El descriptor de seguridad del objeto User se usa para realizar la comprobación de acceso de esta función.
Solo los usuarios o aplicaciones que tienen privilegios administrativos pueden llamar a la función NetUserSetInfo para cambiar la contraseña de un usuario. Cuando un administrador llama a NetUserSetInfo, la única restricción aplicada es que la nueva longitud de contraseña debe ser coherente con los modales del sistema. Un usuario o aplicación que conoce la contraseña actual de un usuario puede llamar a la función NetUserChangePassword para cambiar la contraseña. Para obtener más información sobre las funciones de llamada que requieren privilegios de administrador, consulte Ejecución con privilegios especiales.
Los miembros del grupo local Administradores pueden establecer cualquier elemento modificable de la cuenta de usuario. Todos los usuarios pueden establecer el miembro usri2_country_code de la estructura de USER_INFO_2 (y el miembro usri1024_country_code de la estructura USER_INFO_1024 ) para sus propias cuentas.
Un miembro del grupo local del operador de cuenta no puede establecer los detalles de una cuenta de clase Administradores, conceder un privilegio de administrador de cuenta existente o cambiar el privilegio del operador de ninguna cuenta. Si intenta cambiar el nivel de privilegio o deshabilitar la última cuenta con privilegios de administrador en la base de datos de seguridad, (la base de datos del administrador de cuentas de seguridad (SAM) o, en el caso de los controladores de dominio, la función Active Directory), se produce un error en la función NetUserSetInfo y devuelve NERR_LastAdmin.
Para establecer las siguientes marcas de control de cuentas de usuario, se requieren los siguientes privilegios y derechos de acceso de control .
Marca de control de cuentas | Privilegio o derecho necesario |
---|---|
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION | Privilegio SeEnableDelegationPrivilege, que se concede a los administradores de forma predeterminada. |
UF_TRUSTED_FOR_DELEGATION | SeEnableDelegationPrivilege. |
UF_PASSWD_NOTREQD | "Actualizar contraseña no necesaria" controla el derecho de acceso en el objeto Domain, que se concede a los usuarios autenticados de forma predeterminada. |
UF_DONT_EXPIRE_PASSWD | "Contraseña no expirada" controla el acceso en el objeto Domain, que se concede a los usuarios autenticados de forma predeterminada. |
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED | "Habilitar contraseña cifrada de forma reversible por usuario" controla el acceso en el objeto Domain, que se concede a los usuarios autenticados de forma predeterminada. |
UF_SERVER_TRUST_ACCOUNT | "Agregar o quitar réplica en el dominio" controla el acceso al objeto Domain, que se concede a los administradores de forma predeterminada. |
Para obtener una lista de constantes de privilegios, consulte Constantes de autorización.
La manera correcta de especificar el nuevo nombre de una cuenta es llamar a NetUserSetInfo con USER_INFO_0 y especificar el nuevo valor mediante el miembro usri0_name . Si llama a NetUserSetInfo con otros niveles de información y especifica un valor mediante un miembro usriX_name , se omite el valor.
Tenga en cuenta que las llamadas a NetUserSetInfo solo pueden cambiar el directorio principal para las cuentas de usuario que crea el servidor de red.
Si la función NetUserSetInfo devuelve ERROR_INVALID_PARAMETER, puede usar el parámetro parm_err para indicar el primer miembro de la estructura de información de usuario que no es válida. (Una estructura de información de usuario comienza por USER_INFO_ y su formato se especifica mediante el parámetro level ). En la tabla siguiente se enumeran los valores que se pueden devolver en el parámetro parm_err y el miembro de estructura correspondiente que se encuentra en error. (El prefijo usri*_ indica que el miembro puede comenzar con varios prefijos, por ejemplo, usri10_ o usri1003_).
Valor | Miembro |
---|---|
USER_NAME_PARMNUM | usri*_name |
USER_PASSWORD_PARMNUM | usri*_password |
USER_PASSWORD_AGE_PARMNUM | usri*_password_age |
USER_PRIV_PARMNUM | usri*_priv |
USER_HOME_DIR_PARMNUM | usri*_home_dir |
USER_COMMENT_PARMNUM | usri*_comment |
USER_FLAGS_PARMNUM | usri*_flags |
USER_SCRIPT_PATH_PARMNUM | usri*_script_path |
USER_AUTH_FLAGS_PARMNUM | usri*_auth_flags |
USER_FULL_NAME_PARMNUM | usri*_full_name |
USER_USR_COMMENT_PARMNUM | usri*_usr_comment |
USER_PARMS_PARMNUM | usri*_parms |
USER_WORKSTATIONS_PARMNUM | usri*_workstations |
USER_LAST_LOGON_PARMNUM | usri*_last_logon |
USER_LAST_LOGOFF_PARMNUM | usri*_last_logoff |
USER_ACCT_EXPIRES_PARMNUM | usri*_acct_expires |
USER_MAX_STORAGE_PARMNUM | usri*_max_storage |
USER_UNITS_PER_WEEK_PARMNUM | usri*_units_per_week |
USER_LOGON_HOURS_PARMNUM | usri*_logon_hours |
USER_PAD_PW_COUNT_PARMNUM | usri*_bad_pw_count |
USER_NUM_LOGONS_PARMNUM | usri*_num_logons |
USER_LOGON_SERVER_PARMNUM | usri*_logon_server |
USER_COUNTRY_CODE_PARMNUM | usri*_country_code |
USER_CODE_PAGE_PARMNUM | usri*_code_page |
USER_PRIMARY_GROUP_PARMNUM | usri*_primary_group_id |
USER_PROFILE_PARMNUM | usri*_profile |
USER_HOME_DIR_DRIVE_PARMNUM | usri*_home_dir_drive |
Los nombres de cuenta de usuario están limitados a 20 caracteres y los nombres de grupo están limitados a 256 caracteres. Además, los nombres de cuenta no se pueden terminar por un punto y no pueden incluir comas ni ninguno de los siguientes caracteres imprimibles: ", /, , [, ], :, |, <, >, +, =, ;, ?, *. Los nombres tampoco pueden incluir caracteres en el intervalo 1-31, que no son imprimibles.
La función NetUserSetInfo no controla cómo se protegen los parámetros de contraseña cuando se envían a través de la red a un servidor remoto para cambiar una contraseña de usuario. Cualquier cifrado de estos parámetros se controla mediante el mecanismo de llamada a procedimiento remoto (RPC) admitido por el redirector de red que proporciona el transporte de red. El cifrado también se controla mediante los mecanismos de seguridad admitidos por el equipo local y los mecanismos de seguridad admitidos por el servidor de red remoto especificado en el parámetro servername . Para obtener más información sobre la seguridad cuando se usa el redirector de red de Microsoft y el servidor de red remoto ejecuta Microsoft Windows, consulte la documentación del protocolo para MS-RPCE y MS-SAMR.
Ejemplos
En el ejemplo de código siguiente se muestra cómo deshabilitar una cuenta de usuario con una llamada a la función NetUserSetInfo . El ejemplo de código rellena el miembro usri1008_flags de la estructura USER_INFO_1008 , especificando el valor UF_ACCOUNTDISABLE. A continuación, el ejemplo llama a NetUserSetInfo y especifica el nivel de información 0.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 1008;
USER_INFO_1008 ui;
NET_API_STATUS nStatus;
if (argc != 3)
{
fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
exit(1);
}
// Fill in the USER_INFO_1008 structure member.
// UF_SCRIPT: required.
//
ui.usri1008_flags = UF_SCRIPT | UF_ACCOUNTDISABLE;
//
// Call the NetUserSetInfo function
// to disable the account, specifying level 1008.
//
nStatus = NetUserSetInfo(argv[1],
argv[2],
dwLevel,
(LPBYTE)&ui,
NULL);
//
// Display the result of the call.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"User account %s has been disabled\n", argv[2]);
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | lmaccess.h (include Lm.h) |
Library | Netapi32.lib |
Archivo DLL | Netapi32.dll |
Consulte también
Funciones de administración de red