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 |
---|---|
|
Devuelve parámetros de contraseña global. El parámetro bufptr apunta a una estructura USER_MODALS_INFO_0 . |
|
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 . |
|
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. |
|
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 |
---|---|
|
El usuario no tiene acceso a la información pedida. |
|
No se ha encontrado la ruta de acceso de la red. Este error se devuelve si no se encontró el parámetro servername . |
|
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. |
|
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. |
|
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. |
|
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
Funciones de administración de red