Ändern von Elementen von Benutzerinformationen

Die Netzwerkverwaltungsfunktionen bieten eine Vielzahl von Informationsebenen, um das Ändern von Benutzerinformationen zu unterstützen. 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. Im Code werden verschiedene Informationsstrukturen für die Netzwerkverwaltung verwendet.

Beim Ändern von Benutzerinformationen ist es am besten, die spezifische Ebene für diese Informationen zu verwenden. Dadurch wird verhindert, dass nicht verknüpfte Informationen versehentlich zurückversetzen, wenn die niedrigeren Werte verwendet werden.

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

Bei allen Codefragmenten wird davon ausgegangen, dass der Benutzer die UNICODE-Kompilierungs-Direktive 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 Autorisierungskonst constants.

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-Startverzeichnisses, Ebene 1006

Das folgende Codefragment veranschaulicht, wie der Pfad des Startverzeichnisses eines Benutzers mit einem Aufruf der NetUserSetInfo-Funktion angegeben wird. Das Verzeichnis kann ein hart codiertes 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 Felds "Benutzerkommentar", Ebene 1007

Das folgende Codefragment veranschaulicht, wie sie einem Benutzer einen Kommentar zuordnen, indem Sie die NetUserSetInfo-Funktion aufrufen. 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. Wenn Sie versuchen, andere Flags ohne UF SCRIPT für diese Netzwerke zu setzen, verursacht die _ NetUserSetInfo-Funktion einen Fehler.

#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 ein 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 Benutzerstelle, 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);