Partager via


Modification des éléments des informations utilisateur

Les fonctions de gestion réseau fournissent différents niveaux d’informations pour aider à modifier les informations utilisateur. Certains niveaux nécessitent des privilèges d’administration pour s’exécuter correctement. Pour plus d’informations sur l’appel de fonctions qui nécessitent des privilèges d’administrateur, consultez Exécution avec des privilèges spéciaux.

L’exemple de code de cette rubrique montre comment modifier plusieurs éléments d’informations utilisateur en appelant la fonction NetUserSetInfo . Le code utilise différentes structures d’informations de gestion réseau.

Lors de la modification des informations utilisateur, il est préférable d’utiliser le niveau spécifique pour cette information. Cela empêche la réinitialisation accidentelle d’informations non liées lors de l’utilisation des valeurs de niveau inférieur.

La définition de certains des niveaux les plus couramment utilisés est illustrée dans les exemples de code suivants :

Tous les fragments de code supposent que l’utilisateur a défini la directive de compilation UNICODE et inclus les fichiers d’en-tête du SDK appropriés, comme suit :

#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;

Définition du mot de passe utilisateur, niveau 1003

Le fragment de code suivant montre comment définir le mot de passe d’un utilisateur sur une valeur connue avec un appel à la fonction NetUserSetInfo . La rubrique USER_INFO_1003 contient des informations supplémentaires.

#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);

Définition du privilège utilisateur, niveau 1005

Le fragment de code suivant montre comment spécifier le niveau de privilège attribué à un utilisateur avec un appel à la fonction NetUserSetInfo . La rubrique USER_INFO_1005 contient des informations supplémentaires. Pour plus d’informations sur les privilèges de compte, consultez Privilèges et constantes d’autorisation.

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);

Définition du répertoire d’accueil de l’utilisateur, niveau 1006

Le fragment de code suivant montre comment spécifier le chemin d’accès du répertoire de base d’un utilisateur avec un appel à la fonction NetUserSetInfo . Le répertoire peut être un chemin codé en dur ou un chemin Unicode valide. La rubrique USER_INFO_1006 contient des informations supplémentaires.

#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);

Définition du champ Commentaire utilisateur, niveau 1007

Le fragment de code suivant montre comment associer un commentaire à un utilisateur en appelant la fonction NetUserSetInfo . La rubrique USER_INFO_1007 contient des informations supplémentaires.

#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);

Définition des indicateurs utilisateur, niveau 1008

Le fragment de code suivant montre comment définir des indicateurs utilisateur avec un appel à la fonction NetUserSetInfo . La rubrique USER_INFO_1008 contient une liste de valeurs valides pour les indicateurs et une description de chaque indicateur.

Notez que l’indicateur UF_SCRIPT doit être défini pour les réseaux Windows NT, Windows 2000, Windows XP et LAN Manager. Si vous essayez de définir d’autres indicateurs sans définir UF_SCRIPT sur ces réseaux, la fonction NetUserSetInfo échoue.

#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);

Définition du chemin du script utilisateur, niveau 1009

Le fragment de code suivant montre comment définir le chemin d’accès pour le fichier de script d’ouverture de session d’un utilisateur particulier avec un appel à la fonction NetUserSetInfo . Le fichier de script peut être un . Fichier CMD, fichier .EXE ou fichier .BAT. La chaîne peut également être null. La rubrique USER_INFO_1009 contient des informations supplémentaires.

#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);

Définition des indicateurs d’autorité utilisateur, niveau 1010

Le fragment de code suivant montre comment définir les indicateurs de privilèges d’opérateur pour un utilisateur avec un appel à la fonction NetUserSetInfo . La rubrique USER_INFO_1010 contient une liste de valeurs valides pour les indicateurs et une description de chaque indicateur.

#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);

Définition du nom complet de l’utilisateur, niveau 1011

Le fragment de code suivant montre comment définir le nom complet d’un utilisateur avec un appel à la fonction NetUserSetInfo . La rubrique USER_INFO_1011 contient des informations supplémentaires.

#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);