Změna prvků informací o uživateli
Funkce správy sítě poskytují řadu úrovní informací, které pomáhají při změně informací o uživatelích. Některé úrovně vyžadují administrátorská oprávnění pro úspěšné spuštění. Další informace o volání funkcí, které vyžadují oprávnění správce, naleznete v tématu Spouštění se speciálními oprávněními.
Vzorový kód v tomto tématu ukazuje, jak změnit několik prvků informací o uživateli voláním NetUserSetInfo funkce. Kód používá různé struktury informací o správě sítě.
Při změně informací o uživateli je nejlepší použít pro danou část informací konkrétní úroveň. To zabrání náhodnému resetování nesouvisejících informací při použití hodnot nižší úrovně.
Nastavení některých běžně používaných úrovní je znázorněno v následujících ukázkách kódu:
- Nastavení hesla uživatele, úroveň 1003
- Nastavení oprávnění uživatele, úroveň 1005
- Nastavení domovského adresáře uživatele, úroveň 1006
- Nastavení pole komentáře uživatele, úroveň 1007
- Nastavení příznaků uživatele, úroveň 1008
- Nastavení cesty uživatelského skriptu, úroveň 1009
- nastavení příznaků autority uživatele, úroveň 1010
- Nastavení úplného jména uživatele, úroveň 1011
Všechny fragmenty kódu předpokládají, že uživatel definoval direktivu kompilace UNICODE a zahrnul příslušné soubory hlaviček sady SDK následujícím způsobem:
#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;
Nastavení uživatelského hesla úrovně 1003
Následující fragment kódu ukazuje, jak nastavit heslo uživatele na známou hodnotu s voláním funkce NetUserSetInfo. Téma USER_INFO_1003 obsahuje další informace.
#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);
Nastavení oprávnění uživatele, úroveň 1005
Následující fragment kódu ukazuje, jak určit úroveň oprávnění přiřazenou uživateli s voláním funkce NetUserSetInfo. Téma USER_INFO_1005 obsahuje další informace. Další informace o oprávněních účtu naleznete v tématu Oprávnění a Konstanty autorizace.
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);
Nastavení domovského adresáře uživatele úrovně 1006
Následující fragment kódu ukazuje, jak zadat cestu k domovskému adresáři uživatele pomocí volání funkce NetUserSetInfo. Adresář může být pevně zakódovaná cesta nebo platná cesta Unicode. Téma USER_INFO_1006 obsahuje další informace.
#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);
Nastavení pole komentáře uživatele, úroveň 1007
Následující fragment kódu ukazuje, jak přidružit komentář k uživateli voláním NetUserSetInfo funkce. Téma USER_INFO_1007 obsahuje další informace.
#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);
Nastavení příznaků uživatele, úroveň 1008
Následující fragment kódu ukazuje, jak nastavit příznaky uživatele pomocí volání NetUserSetInfo funkce. Téma USER_INFO_1008 obsahuje seznam platných hodnot pro příznaky a popis jednotlivých příznaků.
Všimněte si, že příznak UF_SCRIPT musí být nastaven pro sítě Windows NT, Windows 2000, Windows XP a LAN Manager. Pokus o nastavení jiných příznaků bez nastavení UF_SCRIPT v těchto sítích způsobí selhání funkce NetUserSetInfo.
#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);
Nastavení cesty uživatelského skriptu, úroveň 1009
Následující fragment kódu ukazuje, jak nastavit cestu pro přihlašovací skript konkrétního uživatele voláním funkce NetUserSetInfo. Soubor skriptu může být . CMD soubor, .EXE soubor nebo .BAT soubor. Řetězec může mít také hodnotu null. Téma USER_INFO_1009 obsahuje další informace.
#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);
Nastavení příznaků uživatelských oprávnění, úroveň 1010
Následující fragment kódu ukazuje, jak nastavit příznaky oprávnění operátora pro uživatele voláním funkce NetUserSetInfo. Téma USER_INFO_1010 obsahuje seznam platných hodnot pro příznaky a popis jednotlivých příznaků.
#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);
Nastavení úplného jména uživatele, úroveň 1011
Následující fragment kódu ukazuje, jak nastavit celé jméno uživatele voláním funkce NetUserSetInfo. Téma USER_INFO_1011 obsahuje další informace.
#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);