Condividi tramite


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
0
Restituisce i parametri globali delle password. Il parametro bufptr punta a una struttura USER_MODALS_INFO_0 .
1
Restituisce le informazioni sul server di accesso e sul controller di dominio. Il parametro bufptr punta a una struttura USER_MODALS_INFO_1 .
2
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.
3
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
ERROR_ACCESS_DENIED
L'utente non ha accesso alle informazioni richieste.
ERROR_BAD_NETPATH
Impossibile trovare il percorso di rete. Questo errore viene restituito se non è stato possibile trovare il parametro servername .
ERROR_INVALID_LEVEL
Il livello di chiamata di sistema non è corretto. Questo errore viene restituito se il parametro di livello non è uno dei valori supportati.
ERROR_INVALID_NAME
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.
ERROR_WRONG_TARGET_NAME
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.
NERR_InvalidComputer
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

Vedi anche

NetUserModalsSet

Funzioni di gestione di rete

Panoramica della gestione della rete

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Funzioni modali utente