Función NetUserModalsSet (lmaccess.h)
La función NetUserModalsSet establece información global para todos los usuarios y grupos globales de la base de datos de seguridad, que es la base de datos del administrador de cuentas de seguridad (SAM) o, en el caso de controladores de dominio, Active Directory.
Sintaxis
NET_API_STATUS NET_API_FUNCTION NetUserModalsSet(
[in] LPCWSTR servername,
[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] level
Especifica el nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
|
Especifica parámetros de contraseña global. El parámetro buf apunta a una estructura USER_MODALS_INFO_0 . |
|
Especifica información sobre el servidor de inicio de sesión y el controlador de dominio. El parámetro buf apunta a una estructura USER_MODALS_INFO_1 . |
|
Especifica el nombre de dominio y el identificador. El parámetro buf apunta a una estructura USER_MODALS_INFO_2 . |
|
Especifica información de bloqueo. El parámetro buf apunta a una estructura USER_MODALS_INFO_3 . |
|
Especifica la longitud mínima permitida de la contraseña. El parámetro buf apunta a una estructura USER_MODALS_INFO_1001 . |
|
Especifica la antigüedad máxima permitida de la contraseña. El parámetro buf apunta a una estructura USER_MODALS_INFO_1002 . |
|
Especifica la antigüedad mínima permitida de la contraseña. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1003 . |
|
Especifica información de inicio de sesión forzado. El parámetro buf apunta a una estructura USER_MODALS_INFO_1004 . |
|
Especifica la longitud del historial de contraseñas. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1005 . |
|
Especifica el rol del servidor de inicio de sesión. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1006 . |
|
Especifica información del controlador de dominio. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1007 . |
[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 redes.
[out] parm_err
Puntero a un valor que recibe el índice del primer miembro de la estructura de información que provoca ERROR_INVALID_PARAMETER. Si este parámetro es NULL, el índice no se devuelve cuando se produce un 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 ejecuta correctamente, el valor devuelto se 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. |
|
El parámetro especificado 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. |
|
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 modales de usuario de administración de red. Para obtener más información, consulte IADsDomain.
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 permite que solo 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 Model.
El descriptor de seguridad del objeto Domain se usa para realizar la comprobación de acceso de esta función. Normalmente, los autores de llamadas deben tener acceso de escritura a todo el objeto para que las llamadas a esta función se realicen correctamente.
Si la función NetUserModalsSet devuelve ERROR_INVALID_PARAMETER, puede usar el parámetro parm_err para indicar el primer miembro de la estructura de información que no es válido. (La estructura de información comienza por USER_MODALS_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 usrmod*_ indica que el miembro puede comenzar con varios prefijos, por ejemplo, usrmod2_ o usrmod1002_).
Valor | Miembro |
---|---|
MODALS_MIN_PASSWD_LEN_PARMNUM | usrmod*_min_passwd_len |
MODALS_MAX_PASSWD_AGE_PARMNUM | usrmod*_max_passwd_age |
MODALS_MIN_PASSWD_AGE_PARMNUM | usrmod*_min_passwd_age |
MODALS_FORCE_LOGOFF_PARMNUM | usrmod*_force_logoff |
MODALS_PASSWD_HIST_LEN_PARMNUM | usrmod*_password_hist_len |
MODALS_ROLE_PARMNUM | usrmod*_role |
MODALS_PRIMARY_PARMNUM | usrmod*_primary |
MODALS_DOMAIN_NAME_PARMNUM | usrmod*_domain_name |
MODALS_DOMAIN_ID_PARMNUM | usrmod*_domain_id |
MODALS_LOCKOUT_DURATION_PARMNUM | usrmod*_lockout_duration |
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM | usrmod*_lockout_observation_window |
MODALS_LOCKOUT_THRESHOLD_PARMNUM | usrmod*_lockout_threshold |
Ejemplos
En el ejemplo de código siguiente se muestra cómo establecer la información global de todos los usuarios y grupos globales con una llamada a la función NetUserModalsSet . El ejemplo rellena los miembros de la estructura USER_MODALS_INFO_0 y llama a NetUserModalsSet, especificando 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 = 0;
USER_MODALS_INFO_0 ui;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = (LPTSTR) argv[1];
//
// Fill in the USER_MODALS_INFO_0 structure.
//
ui.usrmod0_min_passwd_len = 0;
ui.usrmod0_max_passwd_age = (86400 * 30);
ui.usrmod0_min_passwd_age = 0;
ui.usrmod0_force_logoff = TIMEQ_FOREVER; // never force logoff
ui.usrmod0_password_hist_len = 0;
//
// Call the NetUserModalsSet function; specify level 0.
//
nStatus = NetUserModalsSet((LPCWSTR) pszServerName,
dwLevel,
(LPBYTE)&ui,
NULL);
//
// If the call succeeds, inform the user.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"Modals information set successfully on %s\n", argv[1]);
//
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
Requisitos
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 redes