Función NetUserModalsGet (lmaccess.h)

La función NetUserModalsGet recupera 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 NetUserModalsGet(
  [in, optional] LPCWSTR servername,
  [in]           DWORD   level,
  [out]          LPBYTE  *bufptr
);

Parámetros

[in, optional] 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. 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 solicitados. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
0
Devuelve parámetros de contraseña global. El parámetro bufptr apunta a una estructura USER_MODALS_INFO_0 .
1
Devuelve información del servidor de inicio de sesión y del controlador de dominio. El parámetro bufptr apunta a una estructura de USER_MODALS_INFO_1 .
2
Devuelve el nombre de dominio y el identificador. El parámetro bufptr apunta a una estructura de USER_MODALS_INFO_2 . Para obtener más información, vea la sección Comentarios que se muestra más adelante.
3
Devolver información de bloqueo. El parámetro bufptr apunta a una estructura USER_MODALS_INFO_3 .
 

Un inicio de sesión nulo puede llamar a NetUserModalsGet de forma anónima en los niveles de información 0 y 3.

[out] bufptr

Puntero al búfer que recibe los datos. El formato de estos datos depende del valor del parámetro level .

El sistema asigna el búfer para estos datos y la aplicación debe llamar a la función NetApiBufferFree para liberar la memoria asignada cuando los datos devueltos ya no sean necesarios. Para obtener más información, consulte Búferes de funciones de administración de red y longitudes de búfer de funciones de administración de red.

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_BAD_NETPATH
No se ha encontrado la ruta de acceso de la red. Este error se devuelve si no se encontró el parámetro servername .
ERROR_INVALID_LEVEL
El nivel de llamada del sistema no es válido. Este error se devuelve si el parámetro level no es uno de los valores admitidos.
ERROR_INVALID_NAME
El nombre de archivo, el nombre del directorio o la sintaxis de la etiqueta de volumen no son correctos. Este error se devuelve si la sintaxis del parámetro servername es incorrecta.
ERROR_WRONG_TARGET_NAME
El nombre de la cuenta de seguridad de destino es incorrecto. Este error se devuelve por un error de inicio de sesión en un parámetro servername remoto que se ejecuta en Windows Vista.
NERR_InvalidComputer
El nombre de equipo no es válido.

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 todos los usuarios y miembros autenticados del grupo "Acceso compatible con Pre-Windows 2000" vean la información. Si llama a esta función en un servidor miembro o estación de trabajo, todos los usuarios autenticados pueden ver la información. Para obtener información sobre el acceso anónimo y restringir el acceso anónimo en estas plataformas, 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.

Para recuperar el identificador de seguridad (SID) del dominio al que pertenece el equipo, llame a la función NetUserModalsGet que especifica una estructura de USER_MODALS_INFO_2 y NULL en el parámetro servername . Si el equipo no es miembro de un dominio, la función devuelve un puntero NULL .

Ejemplos

En el ejemplo de código siguiente se muestra cómo recuperar información global para todos los usuarios y grupos globales con una llamada a la función NetUserModalsGet . El ejemplo llama a NetUserModalsGet, especificando el nivel de información 0 (USER_MODALS_INFO_0). Si la llamada se realiza correctamente, el ejemplo imprime información de contraseña global. Por último, el ejemplo de código libera la memoria asignada para el búfer de información.

#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 *pBuf = NULL;
   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];
   //
   // Call the NetUserModalsGet function; specify level 0.
   //
   nStatus = NetUserModalsGet((LPCWSTR) pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds, print the global information.
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         printf("\tMinimum password length:  %d\n", pBuf->usrmod0_min_passwd_len);
         printf("\tMaximum password age (d): %d\n", pBuf->usrmod0_max_passwd_age/86400);
         printf("\tMinimum password age (d): %d\n", pBuf->usrmod0_min_passwd_age/86400);
         printf("\tForced log off time (s):  %d\n", pBuf->usrmod0_force_logoff);
         printf("\tPassword history length:  %d\n", pBuf->usrmod0_password_hist_len);
      }
   }
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   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

NetUserModalsSet

Funciones de administración de red

Introducción a la administración de redes

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Funciones modales de usuario