Funzione NetUserSetInfo (lmaccess.h)

La funzione NetUserSetInfo imposta i parametri di un account utente.

Sintassi

NET_API_STATUS NET_API_FUNCTION NetUserSetInfo(
  [in]  LPCWSTR servername,
  [in]  LPCWSTR username,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

Parametri

[in] servername

Puntatore a una stringa costante che specifica il nome DNS o NetBIOS del server remoto in cui eseguire la funzione. Se questo parametro è NULL, viene usato il computer locale.

[in] username

Puntatore a una stringa costante che specifica il nome dell'account utente per cui impostare le informazioni. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

[in] level

Livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
0
Specifica il nome dell'account utente. Il parametro buf punta a una struttura USER_INFO_0 . Usare questa struttura per specificare un nuovo nome del gruppo. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
1
Specifica informazioni dettagliate sull'account utente. Il parametro buf punta a una struttura USER_INFO_1 .
2
Specifica un livello di informazioni e attributi aggiuntivi sull'account utente. Il parametro buf punta a una struttura USER_INFO_2 .
3
Specifica due informazioni e attributi aggiuntivi sull'account utente. Questo livello è valido solo nei server. Il parametro buf punta a una struttura USER_INFO_3 . Si noti che è consigliabile usare USER_INFO_4 .
4
Specifica due informazioni e attributi aggiuntivi sull'account utente. Questo livello è valido solo nei server. Il parametro buf punta a una struttura USER_INFO_4 .
21
Specifica un gestore LAN crittografato unidirezionale 2. password compatibile con x. Il parametro buf punta a una struttura USER_INFO_21 .
22
Specifica informazioni dettagliate sull'account utente. Il parametro buf punta a una struttura USER_INFO_22 .
1003
Specifica una password utente. Il parametro buf punta a una struttura USER_INFO_1003 .
1005
Specifica un livello di privilegi utente. Il parametro buf punta a una struttura USER_INFO_1005 .
1006
Specifica il percorso della home directory per l'utente. Il parametro buf punta a una struttura USER_INFO_1006 .
1007
Specifica un commento da associare all'account utente. Il parametro buf punta a una struttura USER_INFO_1007 .
1008
Specifica gli attributi dell'account utente. Il parametro buf punta a una struttura USER_INFO_1008 .
1009
Specifica il percorso del file di script di accesso dell'utente. Il parametro buf punta a una struttura USER_INFO_1009 .
1010
Specifica i privilegi dell'operatore dell'utente. Il parametro buf punta a una struttura USER_INFO_1010 .
1011
Specifica il nome completo dell'utente. Il parametro buf punta a una struttura USER_INFO_1011 .
1012
Specifica un commento da associare all'utente. Il parametro buf punta a una struttura USER_INFO_1012 .
1014
Specifica i nomi delle workstation da cui l'utente può accedere. Il parametro buf punta a una struttura USER_INFO_1014 .
1017
Specifica quando l'account utente scade. Il parametro buf punta a una struttura USER_INFO_1017 .
1020
Specifica gli orari in cui l'utente può accedere. Il parametro buf punta a una struttura di USER_INFO_1020 .
1024
Specifica il codice paese/area geografica dell'utente. Il parametro buf punta a una struttura di USER_INFO_1024 .
1051
Specifica l'identificatore relativo di un gruppo globale che rappresenta l'utente registrato. Il parametro buf punta a una struttura USER_INFO_1051 .
1052
Specifica il percorso del profilo di un utente di rete. Il parametro buf punta a una struttura USER_INFO_1052 .
1053
Specifica la lettera di unità assegnata alla home directory dell'utente. Il parametro buf punta a una struttura USER_INFO_1053 .

[in] buf

Puntatore al buffer che specifica i dati. Il formato di questi dati dipende dal valore del parametro di livello . Per altre informazioni, vedere Buffer delle funzioni di gestione della rete.

[out] parm_err

Puntatore a un valore che riceve l'indice del primo membro della struttura delle informazioni utente che causa ERROR_INVALID_PARAMETER. Se questo parametro è NULL, l'indice non viene restituito in caso di errore. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è 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_INVALID_PARAMETER
Uno dei parametri della funzione non è valido. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
NERR_InvalidComputer
Il nome del computer non è valido.
NERR_NotPrimary
L'operazione è consentita solo nel controller di dominio primario del dominio.
NERR_SpeGroupOp
L'operazione non è consentita nei gruppi speciali specificati, ovvero gruppi di utenti, gruppi di amministratori, gruppi locali o gruppi guest.
NERR_LastAdmin
L'operazione non è consentita nell'ultimo account amministrativo.
NERR_BadPassword
Il nome o la password di condivisione non sono validi.
NERR_PasswordTooShort
La password è più breve di quanto richiesto. (La password potrebbe anche essere troppo lunga, troppo recente nella cronologia di modifiche, non avere abbastanza caratteri univoci o non soddisfare un altro requisito dei criteri password.)
NERR_UserNotFound
Impossibile trovare il nome utente.

Commenti

Se si sta programmando per Active Directory, potrebbe essere possibile chiamare determinati metodi di Active Directory Service Interface (ADSI) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni utente di gestione della rete. Per altre informazioni, vedere IADsUser e IADsComputer.

Se si chiama questa funzione in un controller di dominio che esegue Active Directory, l'accesso è 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 solo agli amministratori di dominio e agli operatori account di chiamare questa funzione. In un server membro o in una workstation, solo amministratori e Power Users possono chiamare questa funzione. Per altre informazioni, vedere Requisiti di sicurezza per le funzioni di gestione della rete. Per altre informazioni sugli elenchi di controllo di accesso, sugli ACL e sui token di accesso, vedere Controllo di accesso Modello.

Il descrittore di sicurezza dell'oggetto User viene usato per eseguire il controllo di accesso per questa funzione.

Solo gli utenti o le applicazioni con privilegi amministrativi possono chiamare la funzione NetUserSetInfo per modificare la password di un utente. Quando un amministratore chiama NetUserSetInfo, l'unica restrizione applicata è che la nuova lunghezza della password deve essere coerente con le modali di sistema. Un utente o un'applicazione che conosce la password corrente di un utente può chiamare la funzione NetUserChangePassword per modificare la password. Per altre informazioni sulla chiamata di funzioni che richiedono privilegi di amministratore, vedere Esecuzione con privilegi speciali.

I membri del gruppo locale Administrators possono impostare qualsiasi elemento dell'account utente modificabile. Tutti gli utenti possono impostare il membro usri2_country_code della strutturaUSER_INFO_2 (e il membro usri1024_country_code della struttura USER_INFO_1024) per i propri account.

Un membro del gruppo locale dell'operatore account non può impostare i dettagli per un account di classe Administrators, concedere un privilegio amministratore account esistente o modificare il privilegio dell'operatore di qualsiasi account. Se si tenta di modificare il livello di privilegio o disabilitare l'ultimo account con privilegi di amministratore nel database di sicurezza, (il database SAM (Security Account Manager) o, nel caso dei controller di dominio, la funzione NetUserSetInfo ha esito negativo e restituisce NERR_LastAdmin.

Per impostare i flag di controllo dell'account utente seguenti, sono necessari i privilegi seguenti e controllare i diritti di accesso .

Flag di controllo account Privilegi o diritti necessari
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION Privilegio SeEnableDelegationPrivilege, concesso agli amministratori per impostazione predefinita.
UF_TRUSTED_FOR_DELEGATION SeEnableDelegationPrivilege.
UF_PASSWD_NOTREQD "Aggiornare la password non obbligatoria" controllare il diritto di accesso all'oggetto Domain, concesso agli utenti autenticati per impostazione predefinita.
UF_DONT_EXPIRE_PASSWD "Unexpire password" controlla il diritto di accesso all'oggetto Domain, concesso agli utenti autenticati per impostazione predefinita.
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED "Abilitare la password crittografata in modo reversibile per utente" controllare l'accesso a destra sull'oggetto Domain, concesso agli utenti autenticati per impostazione predefinita.
UF_SERVER_TRUST_ACCOUNT "Aggiungi/rimuovi replica nel dominio" controllano il diritto di accesso all'oggetto Domain, concesso agli amministratori per impostazione predefinita.
 

Per un elenco delle costanti dei privilegi, vedere Costanti di autorizzazione.

Il modo corretto per specificare il nuovo nome per un account consiste nel chiamare NetUserSetInfo con USER_INFO_0 e specificare il nuovo valore usando il usri0_name membro. Se si chiama NetUserSetInfo con altri livelli di informazioni e si specifica un valore usando un membro usriX_name , il valore viene ignorato.

Si noti che le chiamate a NetUserSetInfo possono modificare la home directory solo per gli account utente creati dal server di rete.

Se la funzione NetUserSetInfo restituisce ERROR_INVALID_PARAMETER, è possibile usare il parametro parm_err per indicare il primo membro della struttura delle informazioni utente non valida. Una struttura di informazioni utente inizia con USER_INFO_ e il relativo formato viene specificato dal parametro di livello . Nella tabella seguente sono elencati i valori che possono essere restituiti nel parametro parm_err e nel membro della struttura corrispondente in errore. Il prefisso usri*_ indica che il membro può iniziare con più prefissi, ad esempio usri10_ o usri1003_.

Valore Membro
USER_NAME_PARMNUM usri*_name
USER_PASSWORD_PARMNUM usri*_password
USER_PASSWORD_AGE_PARMNUM usri*_password_age
USER_PRIV_PARMNUM usri*_priv
USER_HOME_DIR_PARMNUM usri*_home_dir
USER_COMMENT_PARMNUM usri*_comment
USER_FLAGS_PARMNUM usri*_flags
USER_SCRIPT_PATH_PARMNUM usri*_script_path
USER_AUTH_FLAGS_PARMNUM usri*_auth_flags
USER_FULL_NAME_PARMNUM usri*_full_name
USER_USR_COMMENT_PARMNUM usri*_usr_comment
USER_PARMS_PARMNUM usri*_parms
USER_WORKSTATIONS_PARMNUM usri*_workstations
USER_LAST_LOGON_PARMNUM usri*_last_logon
USER_LAST_LOGOFF_PARMNUM usri*_last_logoff
USER_ACCT_EXPIRES_PARMNUM usri*_acct_expires
USER_MAX_STORAGE_PARMNUM usri*_max_storage
USER_UNITS_PER_WEEK_PARMNUM usri*_units_per_week
USER_LOGON_HOURS_PARMNUM usri*_logon_hours
USER_PAD_PW_COUNT_PARMNUM usri*_bad_pw_count
USER_NUM_LOGONS_PARMNUM usri*_num_logons
USER_LOGON_SERVER_PARMNUM usri*_logon_server
USER_COUNTRY_CODE_PARMNUM usri*_country_code
USER_CODE_PAGE_PARMNUM usri*_code_page
USER_PRIMARY_GROUP_PARMNUM usri*_primary_group_id
USER_PROFILE_PARMNUM usri*_profile
USER_HOME_DIR_DRIVE_PARMNUM usri*_home_dir_drive
 

I nomi degli account utente sono limitati a 20 caratteri e i nomi di gruppo sono limitati a 256 caratteri. Inoltre, i nomi degli account non possono essere terminati da un punto e non possono includere virgole o uno dei caratteri stampabili seguenti: ", /, , [, ], <>|, +, =, =, ;, ?, *. I nomi non possono includere anche caratteri nell'intervallo 1-31, che non sono stampabili.

La funzione NetUserSetInfo non controlla il modo in cui i parametri password vengono protetti quando vengono inviati tramite la rete a un server remoto per modificare una password utente. Qualsiasi crittografia di questi parametri viene gestita dal meccanismo RPC (Remote Procedure Call) supportato dal reindirizzamento di rete che fornisce il trasporto di rete. La crittografia è controllata anche dai meccanismi di sicurezza supportati dal computer locale e dai meccanismi di sicurezza supportati dal server di rete remoto specificato nel parametro nome server . Per altre informazioni sulla sicurezza quando viene usato il reindirizzamento di rete Microsoft e il server di rete remoto esegue Microsoft Windows, vedere la documentazione del protocollo per MS-RPCE e MS-SAMR.

Esempio

L'esempio di codice seguente illustra come disabilitare un account utente con una chiamata alla funzione NetUserSetInfo . L'esempio di codice inserisce il membro usri1008_flags della strutturaUSER_INFO_1008, specificando il valore UF_ACCOUNTDISABLE. L'esempio chiama quindi NetUserSetInfo, specificando il livello di informazioni 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 = 1008;
   USER_INFO_1008 ui;
   NET_API_STATUS nStatus;

   if (argc != 3)
   {
      fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
      exit(1);
   }
   // Fill in the USER_INFO_1008 structure member.
   // UF_SCRIPT: required.
   //
   ui.usri1008_flags = UF_SCRIPT | UF_ACCOUNTDISABLE;
   //
   // Call the NetUserSetInfo function 
   //  to disable the account, specifying level 1008.
   //
   nStatus = NetUserSetInfo(argv[1],
                            argv[2],
                            dwLevel,
                            (LPBYTE)&ui,
                            NULL);
   //
   // Display the result of the call.
   //
   if (nStatus == NERR_Success)
      fwprintf(stderr, L"User account %s has been disabled\n", argv[2]);
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);

   return 0;
}

Requisiti

Requisito Valore
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

NetUserGetInfo

Funzioni di gestione della rete

Panoramica sulla gestione della rete

USER_INFO_0

USER_INFO_1

USER_INFO_1003

USER_INFO_1005

USER_INFO_1006

USER_INFO_1007

USER_INFO_1008

USER_INFO_1009

USER_INFO_1010

USER_INFO_1011

USER_INFO_1012

USER_INFO_1013

USER_INFO_1014

USER_INFO_1017

USER_INFO_1020

USER_INFO_1024

USER_INFO_1051

USER_INFO_1052

USER_INFO_1053

USER_INFO_2

USER_INFO_21

USER_INFO_22

USER_INFO_4

Funzioni utente