Modifica di elementi delle informazioni utente
Le funzioni di gestione della rete offrono un'ampia gamma di livelli di informazioni per facilitare la modifica delle informazioni utente. Alcuni livelli richiedono privilegi amministrativi per l'esecuzione corretta. Per altre informazioni sulla chiamata di funzioni che richiedono privilegi di amministratore, vedere Esecuzione con privilegi speciali.
Il codice di esempio in questo argomento illustra come modificare diversi elementi delle informazioni utente chiamando la funzione NetUserSetInfo . Il codice usa varie strutture di informazioni di gestione di rete.
Quando si modificano le informazioni utente, è consigliabile usare il livello specifico per tale informazione. Ciò impedisce la reimpostazione accidentale di informazioni non correlate quando si usano i valori di livello inferiore.
L'impostazione di alcuni dei livelli più comunemente usati è illustrata negli esempi di codice seguenti:
- Impostazione della password utente, livello 1003
- Impostazione dei privilegi utente, livello 1005
- Impostazione della home directory dell'utente, livello 1006
- Impostazione del campo Commento utente, livello 1007
- Impostazione dei flag utente, livello 1008
- Impostazione del percorso script utente, livello 1009
- Impostazione dei flag dell'autorità utente, livello 1010
- Impostazione del nome completo dell'utente, livello 1011
Tutti i frammenti di codice presuppongono che l'utente abbia definito la direttiva di compilazione UNICODE e includa i file di intestazione SDK appropriati, come indicato di seguito:
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#define INCL_NET
#include <lm.h>
#include <stdio.h>
#pragma comment(lib, "netapi32.lib")
#define SERVER L"test_server_name"
#define USERNAME L"test_user_name"
DWORD netRet = 0;
Impostazione della password utente, livello 1003
Il frammento di codice seguente illustra come impostare la password di un utente su un valore noto con una chiamata alla funzione NetUserSetInfo . L'argomento USER_INFO_1003 contiene informazioni aggiuntive.
#define PASSWORD L"new_password"
USER_INFO_1003 usriSetPassword;
//
// Set the usri1003_password member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriSetPassword.usri1003_password = PASSWORD;
netRet = NetUserSetInfo( SERVER, USERNAME, 1003, (LPBYTE)&usriSetPassword, NULL );
if( netRet == NERR_Success )
printf("Success with level 1003!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1003\n", netRet);
Impostazione dei privilegi utente, livello 1005
Il frammento di codice seguente illustra come specificare il livello di privilegio assegnato a un utente con una chiamata alla funzione NetUserSetInfo . L'argomento USER_INFO_1005 contiene informazioni aggiuntive. Per altre informazioni sui privilegi dell'account, vedere Privilegi e costanti di autorizzazione.
USER_INFO_1005 usriPriv;
//
// Set the usri1005_priv member to the appropriate value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriPriv.usri1005_priv = USER_PRIV_USER;
netRet = NetUserSetInfo( SERVER, USERNAME, 1005, (LPBYTE)&usriPriv, NULL );
if( netRet == NERR_Success )
printf("Success with level 1005!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1005\n", netRet);
Impostazione della home directory dell'utente, livello 1006
Il frammento di codice seguente illustra come specificare il percorso della home directory di un utente con una chiamata alla funzione NetUserSetInfo . La directory può essere un percorso hardcoded o un percorso Unicode valido. L'argomento USER_INFO_1006 contiene informazioni aggiuntive.
#define HOMEDIR L"C:\\USER\USER_PATH"
USER_INFO_1006 usriHomeDir;
//
// Set the usri1006_home_dir member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriHomeDir.usri1006_home_dir = HOMEDIR;
netRet = NetUserSetInfo( SERVER, USERNAME, 1006, (LPBYTE)&usriHomeDir, NULL );
if( netRet == NERR_Success )
printf("Success with level 1006!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1006\n", netRet);
Impostazione del campo Commento utente, livello 1007
Il frammento di codice seguente illustra come associare un commento a un utente chiamando la funzione NetUserSetInfo . L'argomento USER_INFO_1007 contiene informazioni aggiuntive.
#define COMMENT L"This is my Comment Text for the user"
USER_INFO_1007 usriComment;
//
// Set the usri1007_comment member to point to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriComment.usri1007_comment = COMMENT;
netRet = NetUserSetInfo( SERVER, USERNAME, 1007, (LPBYTE)&usriComment, NULL );
if( netRet == NERR_Success )
printf("Success with level 1007!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1007\n", netRet);
Impostazione dei flag utente, livello 1008
Il frammento di codice seguente illustra come impostare i flag utente con una chiamata alla funzione NetUserSetInfo . L'argomento USER_INFO_1008 contiene un elenco di valori validi per i flag e una descrizione di ogni flag.
Si noti che il flag UF_SCRIPT deve essere impostato per le reti Windows NT, Windows 2000, Windows XP e LAN Manager. Se si tenta di impostare altri flag senza impostare UF_SCRIPT in queste reti, la funzione NetUserSetInfo avrà esito negativo.
#define USR_FLAGS UF_SCRIPT | UF_NORMAL_ACCOUNT
USER_INFO_1008 usriFlags;
//
// Set the usri1008_flags member to the appropriate constant value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriFlags.usri1008_flags = USR_FLAGS;
netRet = NetUserSetInfo( SERVER, USERNAME, 1008, (LPBYTE)&usriFlags, NULL );
if( netRet == NERR_Success )
printf("Success with level 1008!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1008\n", netRet);
Impostazione del percorso script utente, livello 1009
Il frammento di codice seguente illustra come impostare il percorso del file di script di accesso di un determinato utente con una chiamata alla funzione NetUserSetInfo . Il file di script può essere . File CMD, un file di .EXE o un file di .BAT. La stringa può anche essere Null. L'argomento USER_INFO_1009 contiene informazioni aggiuntive.
#define SCRIPT_PATH L"C:\\BIN\\MYSCRIPT.BAT"
USER_INFO_1009 usriScrPath;
//
// Set the usri1009_script_path member to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriScrPath.usri1009_script_path = SCRIPT_PATH;
netRet = NetUserSetInfo( SERVER, USERNAME, 1009, (LPBYTE)&usriScrPath, NULL );
if( netRet == NERR_Success )
printf("Success with level 1009!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1009\n", netRet);
Impostazione dei flag dell'autorità utente, livello 1010
Il frammento di codice seguente illustra come impostare i flag dei privilegi dell'operatore per un utente con una chiamata alla funzione NetUserSetInfo . L'argomento USER_INFO_1010 contiene un elenco di valori validi per i flag e una descrizione di ogni flag.
#define AUTHORITY_FLAGS AF_OP_ACCOUNTS
USER_INFO_1010 usriAuthFlags;
//
// Set the usri1010_auth_flags member to the appropriate constant value.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriAuthFlags.usri1010_auth_flags = AUTHORITY_FLAGS;
netRet = NetUserSetInfo( SERVER, USERNAME, 1010, (LPBYTE)&usriAuthFlags, NULL);
if( netRet == NERR_Success )
printf("Success with level 1010!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo level 1010\n", netRet);
Impostazione del nome completo dell'utente, livello 1011
Il frammento di codice seguente illustra come impostare il nome completo di un utente con una chiamata alla funzione NetUserSetInfo . L'argomento USER_INFO_1011 contiene informazioni aggiuntive.
#define USER_FULL_NAME L"Joe B. User"
USER_INFO_1011 usriFullName;
//
// Set the usri1011_full_name member to a valid Unicode string.
//
// SERVER and USERNAME can be hard-coded strings or pointers to Unicode strings.
//
usriFullName.usri1011_full_name = USER_FULL_NAME;
netRet = NetUserSetInfo( SERVER, USERNAME, 1011, (LPBYTE)&usriFullName, NULL);
if( netRet == NERR_Success )
printf("Success with level 1011!\n");
else
printf( "ERROR: %d returned from NetUserSetInfo\n", netRet);