Funzione NetUserModalsGet (lmaccess.h)
La funzione NetUserModalsGet recupera informazioni globali per tutti gli utenti e i gruppi globali nel database di sicurezza, ovvero il database sam (Security Accounts Manager) o, nel caso dei controller di dominio, Active Directory.
Sintassi
NET_API_STATUS NET_API_FUNCTION NetUserModalsGet(
[in, optional] LPCWSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Parametri
[in, optional] servername
Puntatore a una stringa costante che specifica il nome DNS o NetBIOS del server remoto in cui deve essere eseguita la funzione. Se questo parametro è NULL, viene utilizzato il computer locale. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
[in] level
Livello informativo dei dati richiesti. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Restituisce i parametri globali delle password. Il parametro bufptr punta a una struttura USER_MODALS_INFO_0 . |
|
Restituisce le informazioni sul server di accesso e sul controller di dominio. Il parametro bufptr punta a una struttura USER_MODALS_INFO_1 . |
|
Restituisce il nome di dominio e l'identificatore. Il parametro bufptr punta a una struttura USER_MODALS_INFO_2 . Per ulteriori informazioni, vedere la sezione Osservazioni successiva. |
|
Restituisce informazioni sul blocco. Il parametro bufptr punta a una struttura USER_MODALS_INFO_3 . |
Un accesso di sessione Null può chiamare NetUserModalsGet in modo anonimo a livello di informazioni 0 e 3.
[out] bufptr
Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro level .
Il buffer per questi dati viene allocato dal sistema e l'applicazione deve chiamare la funzione NetApiBufferFree per liberare la memoria allocata quando i dati restituiti non sono più necessari. Per altre informazioni, vedere Buffer delle funzioni di gestione di rete e lunghezze del buffer delle funzioni di gestione di rete.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene NERR_Success.
Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.
Codice restituito | Descrizione |
---|---|
|
L'utente non ha accesso alle informazioni richieste. |
|
Impossibile trovare il percorso di rete. Questo errore viene restituito se non è stato possibile trovare il parametro servername . |
|
Il livello di chiamata di sistema non è corretto. Questo errore viene restituito se il parametro di livello non è uno dei valori supportati. |
|
Il nome file, il nome della directory o la sintassi dell'etichetta del volume non è corretto. Questo errore viene restituito se la sintassi del parametro nomeserver non è corretta. |
|
Il nome dell'account di destinazione non è corretto. Questo errore viene restituito per un errore di accesso a un parametro servername remoto in esecuzione in Windows Vista. |
|
Il nome del computer non è valido. |
Commenti
Se si esegue la programmazione per Active Directory, è possibile chiamare determinati metodi ADSI (Active Directory Service Interface) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni modali dell'utente di gestione di rete. Per altre informazioni, vedere IADsDomain.
Se si chiama questa funzione in un controller di dominio che esegue Active Directory, l'accesso viene consentito o negato in base all'elenco di controllo di accesso (ACL) per l'oggetto a protezione diretta. L'elenco di controllo di accesso predefinito consente a tutti gli utenti autenticati e i membri del gruppo "Accesso compatibile con Pre-Windows 2000" di visualizzare le informazioni. Se si chiama questa funzione in un server membro o in una workstation, tutti gli utenti autenticati possono visualizzare le informazioni. Per informazioni sull'accesso anonimo e sulla limitazione dell'accesso anonimo in queste piattaforme, vedere Requisiti di sicurezza per le funzioni di gestione di rete. Per altre informazioni su ACL, ACL e token di accesso, vedere Controllo di accesso Model.
Il descrittore di sicurezza dell'oggetto Domain viene utilizzato per eseguire il controllo di accesso per questa funzione.
Per recuperare l'identificatore di sicurezza (SID) del dominio a cui appartiene il computer, chiamare la funzione NetUserModalsGet specificando una struttura USER_MODALS_INFO_2 e NULL nel parametro servername . Se il computer non è membro di un dominio, la funzione restituisce un puntatore NULL .
Esempio
L'esempio di codice seguente illustra come recuperare informazioni globali per tutti gli utenti e i gruppi globali con una chiamata alla funzione NetUserModalsGet . L'esempio chiama NetUserModalsGet, specificando il livello di informazioni 0 (USER_MODALS_INFO_0). Se la chiamata ha esito positivo, l'esempio stampa le informazioni globali sulla password. Infine, l'esempio di codice libera la memoria allocata per il buffer delle informazioni.
#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;
}
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | lmaccess.h (include Lm.h) |
Libreria | Netapi32.lib |
DLL | Netapi32.dll |