Freigeben über


Ändern von Elementen von Benutzerinformationen

Die Netzwerkverwaltungsfunktionen bieten eine Vielzahl von Informationsebenen, die beim Ändern von Benutzerinformationen helfen. Einige Ebenen erfordern Administratorrechte, um erfolgreich ausgeführt zu werden. Weitere Informationen zum Aufrufen von Funktionen, die Administratorrechte erfordern, finden Sie unter Ausführen mit speziellen Berechtigungen.

Der Beispielcode in diesem Thema veranschaulicht, wie Mehrere Elemente von Benutzerinformationen durch Aufrufen der NetUserSetInfo-Funktion geändert werden. Der Code verwendet verschiedene Netzwerkverwaltungsinformationsstrukturen.

Beim Ändern von Benutzerinformationen empfiehlt es sich, die spezifische Ebene für diese Information zu verwenden. Dadurch wird das versehentliche Zurücksetzen von nicht verknüpften Informationen verhindert, wenn die Werte der niedrigeren Ebene verwendet werden.

Das Festlegen einiger der am häufigsten verwendeten Ebenen wird in den folgenden Codebeispielen veranschaulicht:

Bei allen Codefragmenten wird davon ausgegangen, dass der Benutzer die UNICODE-Kompilierungsdirektive definiert und die entsprechenden SDK-Headerdateien wie folgt eingeschlossen hat:

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

Festlegen des Benutzerkennworts, Ebene 1003

Das folgende Codefragment veranschaulicht, wie das Kennwort eines Benutzers mit einem Aufruf der NetUserSetInfo-Funktion auf einen bekannten Wert festgelegt wird. Das Thema USER_INFO_1003 enthält zusätzliche Informationen.

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

Festlegen der Benutzerberechtigung, Ebene 1005

Das folgende Codefragment veranschaulicht, wie die Einem Benutzer zugewiesene Berechtigungsebene mit einem Aufruf der NetUserSetInfo-Funktion angegeben wird. Das Thema USER_INFO_1005 enthält zusätzliche Informationen. Weitere Informationen zu Kontoberechtigungen finden Sie unter Berechtigungen und Autorisierungskonstanten.

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

Festlegen des Benutzer-Basisverzeichnisses, Ebene 1006

Das folgende Codefragment veranschaulicht, wie der Pfad des Basisverzeichnisses eines Benutzers mit einem Aufruf der NetUserSetInfo-Funktion angegeben wird. Das Verzeichnis kann ein hartcodierter Pfad oder ein gültiger Unicode-Pfad sein. Das Thema USER_INFO_1006 enthält zusätzliche Informationen.

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

Festlegen des Benutzerkommentarfelds, Ebene 1007

Das folgende Codefragment veranschaulicht, wie ein Kommentar einem Benutzer durch Aufrufen der NetUserSetInfo-Funktion zugeordnet wird. Das Thema USER_INFO_1007 enthält zusätzliche Informationen.

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

Festlegen der Benutzerflags, Ebene 1008

Das folgende Codefragment veranschaulicht, wie Benutzerflags mit einem Aufruf der NetUserSetInfo-Funktion festgelegt werden. Das Thema USER_INFO_1008 enthält eine Liste gültiger Werte für die Flags und eine Beschreibung der einzelnen Flags.

Beachten Sie, dass das UF_SCRIPT-Flag für Windows NT-, Windows 2000-, Windows XP- und LAN-Manager-Netzwerke festgelegt werden muss. Der Versuch, andere Flags festzulegen, ohne UF_SCRIPT in diesen Netzwerken festzulegen, führt dazu, dass die NetUserSetInfo-Funktion fehlschlägt.

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

Festlegen des Benutzerskriptpfads, Ebene 1009

Das folgende Codefragment veranschaulicht, wie der Pfad für die Anmeldeskriptdatei eines bestimmten Benutzers mit einem Aufruf der NetUserSetInfo-Funktion festgelegt wird. Die Skriptdatei kann eine sein. CMD-Datei, eine .EXE-Datei oder eine .BAT-Datei. Die Zeichenfolge kann auch NULL sein. Das Thema USER_INFO_1009 enthält zusätzliche Informationen.

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

Festlegen der Flags der Benutzerautorität, Ebene 1010

Das folgende Codefragment veranschaulicht, wie die Operatorberechtigungsflags für einen Benutzer mit einem Aufruf der NetUserSetInfo-Funktion festgelegt werden. Das Thema USER_INFO_1010 enthält eine Liste gültiger Werte für die Flags und eine Beschreibung der einzelnen Flags.

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

Festlegen des vollständigen Benutzernamens, Ebene 1011

Das folgende Codefragment veranschaulicht, wie der vollständige Name eines Benutzers mit einem Aufruf der NetUserSetInfo-Funktion festgelegt wird. Das Thema USER_INFO_1011 enthält zusätzliche Informationen.

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