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 |
---|---|
|
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. |
|
Specifica informazioni dettagliate sull'account utente. Il parametro buf punta a una struttura USER_INFO_1 . |
|
Specifica un livello di informazioni e attributi aggiuntivi sull'account utente. Il parametro buf punta a una struttura USER_INFO_2 . |
|
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 . |
|
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 . |
|
Specifica un gestore LAN crittografato unidirezionale 2. password compatibile con x. Il parametro buf punta a una struttura USER_INFO_21 . |
|
Specifica informazioni dettagliate sull'account utente. Il parametro buf punta a una struttura USER_INFO_22 . |
|
Specifica una password utente. Il parametro buf punta a una struttura USER_INFO_1003 . |
|
Specifica un livello di privilegi utente. Il parametro buf punta a una struttura USER_INFO_1005 . |
|
Specifica il percorso della home directory per l'utente. Il parametro buf punta a una struttura USER_INFO_1006 . |
|
Specifica un commento da associare all'account utente. Il parametro buf punta a una struttura USER_INFO_1007 . |
|
Specifica gli attributi dell'account utente. Il parametro buf punta a una struttura USER_INFO_1008 . |
|
Specifica il percorso del file di script di accesso dell'utente. Il parametro buf punta a una struttura USER_INFO_1009 . |
|
Specifica i privilegi dell'operatore dell'utente. Il parametro buf punta a una struttura USER_INFO_1010 . |
|
Specifica il nome completo dell'utente. Il parametro buf punta a una struttura USER_INFO_1011 . |
|
Specifica un commento da associare all'utente. Il parametro buf punta a una struttura USER_INFO_1012 . |
|
Specifica i nomi delle workstation da cui l'utente può accedere. Il parametro buf punta a una struttura USER_INFO_1014 . |
|
Specifica quando l'account utente scade. Il parametro buf punta a una struttura USER_INFO_1017 . |
|
Specifica gli orari in cui l'utente può accedere. Il parametro buf punta a una struttura di USER_INFO_1020 . |
|
Specifica il codice paese/area geografica dell'utente. Il parametro buf punta a una struttura di USER_INFO_1024 . |
|
Specifica l'identificatore relativo di un gruppo globale che rappresenta l'utente registrato. Il parametro buf punta a una struttura USER_INFO_1051 . |
|
Specifica il percorso del profilo di un utente di rete. Il parametro buf punta a una struttura USER_INFO_1052 . |
|
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 |
---|---|
|
L'utente non ha accesso alle informazioni richieste. |
|
Uno dei parametri della funzione non è valido. Per ulteriori informazioni, vedere la sezione Osservazioni successiva. |
|
Il nome del computer non è valido. |
|
L'operazione è consentita solo nel controller di dominio primario del dominio. |
|
L'operazione non è consentita nei gruppi speciali specificati, ovvero gruppi di utenti, gruppi di amministratori, gruppi locali o gruppi guest. |
|
L'operazione non è consentita nell'ultimo account amministrativo. |
|
Il nome o la password di condivisione non sono validi. |
|
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.) |
|
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
Funzioni di gestione della rete