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
0
Especifica parámetros de contraseña global. El parámetro buf apunta a una estructura USER_MODALS_INFO_0 .
1
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 .
2
Especifica el nombre de dominio y el identificador. El parámetro buf apunta a una estructura USER_MODALS_INFO_2 .
3
Especifica información de bloqueo. El parámetro buf apunta a una estructura USER_MODALS_INFO_3 .
1001
Especifica la longitud mínima permitida de la contraseña. El parámetro buf apunta a una estructura USER_MODALS_INFO_1001 .
1002
Especifica la antigüedad máxima permitida de la contraseña. El parámetro buf apunta a una estructura USER_MODALS_INFO_1002 .
1003
Especifica la antigüedad mínima permitida de la contraseña. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1003 .
1004
Especifica información de inicio de sesión forzado. El parámetro buf apunta a una estructura USER_MODALS_INFO_1004 .
1005
Especifica la longitud del historial de contraseñas. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1005 .
1006
Especifica el rol del servidor de inicio de sesión. El parámetro buf apunta a una estructura de USER_MODALS_INFO_1006 .
1007
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
ERROR_ACCESS_DENIED
El usuario no tiene acceso a la información pedida.
ERROR_INVALID_PARAMETER
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.
NERR_InvalidComputer
El nombre de equipo no es válido.
NERR_UserNotFound
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

NetUserModalsGet

Funciones de administración de redes

Introducción a la administración de redes

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_1001

USER_MODALS_INFO_1002

USER_MODALS_INFO_1003

USER_MODALS_INFO_1004

USER_MODALS_INFO_1005

USER_MODALS_INFO_1006

USER_MODALS_INFO_1007

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Funciones modales de usuario