NetUserSetInfo-Funktion (lmaccess.h)

Die NetUserSetInfo-Funktion legt die Parameter eines Benutzerkontos fest.

Syntax

NET_API_STATUS NET_API_FUNCTION NetUserSetInfo(
  [in]  LPCWSTR servername,
  [in]  LPCWSTR username,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

Parameter

[in] servername

Ein Zeiger auf eine konstante Zeichenfolge, die den DNS- oder NetBIOS-Namen des Remoteservers angibt, auf dem die Funktion ausgeführt werden soll. Wenn dieser Parameter NULL ist, wird der lokale Computer verwendet.

[in] username

Ein Zeiger auf eine konstante Zeichenfolge, die den Namen des Benutzerkontos angibt, für das Informationen festgelegt werden sollen. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

[in] level

Die Informationsebene der Daten. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
0
Gibt den Namen des Benutzerkontos an. Der buf-Parameter verweist auf eine USER_INFO_0-Struktur . Verwenden Sie diese Struktur, um einen neuen Gruppennamen anzugeben. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
1
Gibt detaillierte Informationen zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_1-Struktur .
2
Gibt Informationen der ersten Ebene und zusätzliche Attribute zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_2-Struktur .
3
Gibt Informationen der zweiten Ebene und zusätzliche Attribute zum Benutzerkonto an. Diese Ebene ist nur auf Servern gültig. Der buf-Parameter verweist auf eine USER_INFO_3-Struktur . Beachten Sie, dass Es empfohlen wird, stattdessen USER_INFO_4 zu verwenden.
4
Gibt Informationen der zweiten Ebene und zusätzliche Attribute zum Benutzerkonto an. Diese Ebene ist nur auf Servern gültig. Der buf-Parameter verweist auf eine USER_INFO_4-Struktur .
21
Gibt einen unidirektionale verschlüsselten LAN-Manager 2 an. x-kompatibles Kennwort. Der buf-Parameter verweist auf eine USER_INFO_21-Struktur .
22
Gibt detaillierte Informationen zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_22-Struktur .
1003
Gibt ein Benutzerkennwort an. Der buf-Parameter verweist auf eine USER_INFO_1003-Struktur .
1005
Gibt eine Benutzerberechtigungsstufe an. Der buf-Parameter verweist auf eine USER_INFO_1005-Struktur .
1006
Gibt den Pfad des Basisverzeichnisses für den Benutzer an. Der buf-Parameter verweist auf eine USER_INFO_1006-Struktur .
1007
Gibt einen Kommentar an, der dem Benutzerkonto zugeordnet werden soll. Der buf-Parameter verweist auf eine USER_INFO_1007-Struktur .
1008
Gibt Benutzerkontoattribute an. Der buf-Parameter verweist auf eine USER_INFO_1008-Struktur .
1009
Gibt den Pfad für die Anmeldeskriptdatei des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1009-Struktur .
1010
Gibt die Operatorberechtigungen des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1010-Struktur .
1011
Gibt den vollständigen Namen des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1011-Struktur .
1012
Gibt einen Kommentar an, der dem Benutzer zugeordnet werden soll. Der buf-Parameter verweist auf eine USER_INFO_1012-Struktur .
1014
Gibt die Namen der Arbeitsstationen an, von denen sich der Benutzer anmelden kann. Der buf-Parameter verweist auf eine USER_INFO_1014-Struktur .
1017
Gibt an, wann das Benutzerkonto abläuft. Der buf-Parameter verweist auf eine USER_INFO_1017-Struktur .
1020
Gibt die Zeiten an, zu denen sich der Benutzer anmelden kann. Der buf-Parameter verweist auf eine USER_INFO_1020-Struktur .
1024
Gibt den Länder-/Regionscode des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1024-Struktur .
1051
Gibt den relativen Bezeichner einer globalen Gruppe an, die den registrierten Benutzer darstellt. Der buf-Parameter verweist auf eine USER_INFO_1051-Struktur .
1052
Gibt den Pfad zum Profil eines Netzwerkbenutzers an. Der buf-Parameter verweist auf eine USER_INFO_1052-Struktur .
1053
Gibt den Laufwerkbuchstaben an, der dem Basisverzeichnis des Benutzers zugewiesen ist. Der buf-Parameter verweist auf eine USER_INFO_1053-Struktur .

[in] buf

Ein Zeiger auf den Puffer, der die Daten angibt. Das Format dieser Daten hängt vom Wert des level-Parameters ab. Weitere Informationen finden Sie unter Netzwerkverwaltungsfunktionspuffer.

[out] parm_err

Ein Zeiger auf einen Wert, der den Index des ersten Elements der Benutzerinformationsstruktur empfängt, der ERROR_INVALID_PARAMETER verursacht. Wenn dieser Parameter NULL ist, wird der Index nicht bei einem Fehler zurückgegeben. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.

Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Fehlercodes sein.

Rückgabecode Beschreibung
ERROR_ACCESS_DENIED
Der Benutzer besitzt keinen Zugriff auf die angeforderten Informationen.
ERROR_INVALID_PARAMETER
Einer der Funktionsparameter ist ungültig. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
NERR_InvalidComputer
Der Computername ist ungültig.
NERR_NotPrimary
Der Vorgang ist nur auf dem primären Domänencontroller der Domäne zulässig.
NERR_SpeGroupOp
Der Vorgang ist für bestimmte spezielle Gruppen nicht zulässig, z. B. Benutzergruppen, Administratorgruppen, lokale Gruppen oder Gastgruppen.
NERR_LastAdmin
Der Vorgang ist für das letzte Administratorkonto nicht zulässig.
NERR_BadPassword
Der Freigabename oder das Kennwort ist ungültig.
NERR_PasswordTooShort
Das Kennwort ist kürzer als erforderlich. (Das Kennwort kann möglicherweise auch zu lang, nicht über ausreichend Sonderzeichen verfügen, dessen Änderung noch nicht wirksam sein oder es stimmt nicht mit anderen Kennwortrichtlinien überein.)
NERR_UserNotFound
Der Benutzername konnte nicht gefunden werden.

Hinweise

Wenn Sie für Active Directory programmieren, können Sie möglicherweise bestimmte ADSI-Methoden (Active Directory Service Interface) aufrufen, um die gleiche Funktionalität zu erreichen, die Sie durch Aufrufen der Benutzerfunktionen der Netzwerkverwaltung erreichen können. Weitere Informationen finden Sie unter IADsUser und IADsComputer.

Wenn Sie diese Funktion auf einem Domänencontroller aufrufen, auf dem Active Directory ausgeführt wird, wird der Zugriff basierend auf der Zugriffssteuerungsliste (Access Control List, ACL) für das sicherungsfähige Objekt zugelassen oder verweigert. Die Standard-ACL erlaubt nur Domänenadministratoren und Kontooperatoren, diese Funktion aufzurufen. Auf einem Mitgliedsserver oder einer Arbeitsstation können nur Administratoren und Power Users diese Funktion aufrufen. Weitere Informationen finden Sie unter Sicherheitsanforderungen für die Netzwerkverwaltungsfunktionen. Weitere Informationen zu ACLs, ACEs und Zugriffstoken finden Sie unter Access Control Modell.

Der Sicherheitsdeskriptor des User-Objekts wird verwendet, um die Zugriffsüberprüfung für diese Funktion durchzuführen.

Nur Benutzer oder Anwendungen mit Administratorrechten können die NetUserSetInfo-Funktion aufrufen, um das Kennwort eines Benutzers zu ändern. Wenn ein Administrator NetUserSetInfo aufruft, gilt die einzige Einschränkung, dass die neue Kennwortlänge mit Systemmodi konsistent sein muss. Ein Benutzer oder eine Anwendung, der das aktuelle Kennwort eines Benutzers kennt, kann die NetUserChangePassword-Funktion aufrufen, um das Kennwort zu ändern. Weitere Informationen zum Aufrufen von Funktionen, die Administratorrechte erfordern, finden Sie unter Ausführen mit speziellen Berechtigungen.

Mitglieder der lokalen Gruppe Administratoren können alle änderbaren Benutzerkontenelemente festlegen. Alle Benutzer können das usri2_country_code-Element der USER_INFO_2-Struktur (und das usri1024_country_code-Element der USER_INFO_1024-Struktur ) für ihre eigenen Konten festlegen.

Ein Mitglied der lokalen Gruppe des Kontooperators kann keine Details für ein Administratorklassenkonto festlegen, einem vorhandenen Konto Administratorrechte erteilen oder die Operatorberechtigung eines Kontos ändern. Wenn Sie versuchen, die Berechtigungsstufe zu ändern oder das letzte Konto mit Administratorberechtigung in der Sicherheitsdatenbank zu deaktivieren (die SAM-Datenbank (Security Accounts Manager) oder im Fall von Domänencontrollern die Active Directory-Funktion, schlägt die NetUserSetInfo-Funktion fehl und gibt NERR_LastAdmin zurück.

Zum Festlegen der folgenden Benutzerkontensteuerungsflags sind die folgenden Berechtigungen und Zugriffsberechtigungen erforderlich.

Kontosteuerungsflag Berechtigungen oder Rechte erforderlich
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION SeEnableDelegationPrivilege-Berechtigung, die Administratoren standardmäßig gewährt wird.
UF_TRUSTED_FOR_DELEGATION SeEnableDelegationPrivilege.
UF_PASSWD_NOTREQD "Kennwort aktualisieren nicht erforderlich" steuert das Zugriffsrecht auf das Domain-Objekt, das authentifizierten Benutzern standardmäßig gewährt wird.
UF_DONT_EXPIRE_PASSWD "Unexpire password" steuert das Zugriffsrecht auf das Domain-Objekt, das authentifizierten Benutzern standardmäßig gewährt wird.
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED "Pro Benutzer umkehrbar verschlüsseltes Kennwort aktivieren" steuern Sie das Zugriffsrecht auf das Domain-Objekt, das authentifizierten Benutzern standardmäßig gewährt wird.
UF_SERVER_TRUST_ACCOUNT "Replikat in Domäne hinzufügen/entfernen" steuert das Zugriffsrecht auf das Domain-Objekt, das Administratoren standardmäßig gewährt wird.
 

Eine Liste der Berechtigungskonstanten finden Sie unter Autorisierungskonstanten.

Die richtige Methode zum Angeben des neuen Namens für ein Konto besteht darin , NetUserSetInfo mit USER_INFO_0 aufzurufen und den neuen Wert mithilfe des usri0_name-Elements anzugeben. Wenn Sie NetUserSetInfo mit anderen Informationsebenen aufrufen und einen Wert mithilfe eines usriX_name-Elements angeben, wird der Wert ignoriert.

Beachten Sie, dass Aufrufe von NetUserSetInfo das Basisverzeichnis nur für Benutzerkonten ändern können, die vom Netzwerkserver erstellt werden.

Wenn die NetUserSetInfo-Funktion ERROR_INVALID_PARAMETER zurückgibt, können Sie den parameter parm_err verwenden, um den ersten ungültigen Member der Benutzerinformationsstruktur anzugeben. (Eine Benutzerinformationsstruktur beginnt mit USER_INFO_, und ihr Format wird durch den level-Parameter angegeben.) In der folgenden Tabelle sind die Werte aufgeführt, die im parameter parm_err zurückgegeben werden können, und dem entsprechenden Strukturmember, der fehlerhaft ist. (Das Präfix usri*_ gibt an, dass der Member mit mehreren Präfixen beginnen kann, z. B. usri10_ oder usri1003_.)

Wert Member
USER_NAME_PARMNUM usri*_name
USER_PASSWORD_PARMNUM usri*_password
USER_PASSWORD_AGE_PARMNUM usri*_password_age
USER_PRIV_PARMNUM usri*_priv
USER_HOME_DIR_PARMNUM usri*_home_dir
USER_COMMENT_PARMNUM usri*_comment
USER_FLAGS_PARMNUM usri*_flags
USER_SCRIPT_PATH_PARMNUM usri*_script_path
USER_AUTH_FLAGS_PARMNUM usri*_auth_flags
USER_FULL_NAME_PARMNUM usri*_full_name
USER_USR_COMMENT_PARMNUM usri*_usr_comment
USER_PARMS_PARMNUM usri*_parms
USER_WORKSTATIONS_PARMNUM usri*_workstations
USER_LAST_LOGON_PARMNUM usri*_last_logon
USER_LAST_LOGOFF_PARMNUM usri*_last_logoff
USER_ACCT_EXPIRES_PARMNUM usri*_acct_expires
USER_MAX_STORAGE_PARMNUM usri*_max_storage
USER_UNITS_PER_WEEK_PARMNUM usri*_units_per_week
USER_LOGON_HOURS_PARMNUM usri*_logon_hours
USER_PAD_PW_COUNT_PARMNUM usri*_bad_pw_count
USER_NUM_LOGONS_PARMNUM usri*_num_logons
USER_LOGON_SERVER_PARMNUM usri*_logon_server
USER_COUNTRY_CODE_PARMNUM usri*_country_code
USER_CODE_PAGE_PARMNUM usri*_code_page
USER_PRIMARY_GROUP_PARMNUM usri*_primary_group_id
USER_PROFILE_PARMNUM usri*_profile
USER_HOME_DIR_DRIVE_PARMNUM usri*_home_dir_drive
 

Benutzerkontennamen sind auf 20 Zeichen und Gruppennamen auf 256 Zeichen beschränkt. Darüber hinaus können Kontonamen nicht durch einen Punkt beendet werden, und sie dürfen keine Kommas oder eines der folgenden druckbaren Zeichen enthalten: ", /, , [, ], ], :, |, <, , >+, =, ;, ?, *. Namen können auch keine Zeichen im Bereich 1 bis 31 enthalten, die nicht druckbar sind.

Die NetUserSetInfo-Funktion steuert nicht, wie die Kennwortparameter geschützt werden, wenn sie über das Netzwerk an einen Remoteserver gesendet werden, um ein Benutzerkennwort zu ändern. Jede Verschlüsselung dieser Parameter wird vom RPC-Mechanismus (Remote Procedure Call) verarbeitet, der von der Netzwerkumleitung unterstützt wird, die den Netzwerktransport bereitstellt. Die Verschlüsselung wird auch von den Sicherheitsmechanismen gesteuert, die vom lokalen Computer unterstützt werden, und den Sicherheitsmechanismen, die vom Remotenetzwerkserver unterstützt werden, der im Servername-Parameter angegeben ist. Weitere Informationen zur Sicherheit, wenn der Microsoft-Netzwerkumleitungsor verwendet wird und auf dem Remotenetzwerkserver Microsoft Windows ausgeführt wird, finden Sie in der Protokolldokumentation für MS-RPCE und MS-SAMR.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein Benutzerkonto mit einem Aufruf der NetUserSetInfo-Funktion deaktivieren. Im Codebeispiel wird der usri1008_flags-Member der USER_INFO_1008-Struktur ausgefüllt, wobei der Wert UF_ACCOUNTDISABLE angegeben wird. Anschließend ruft das Beispiel NetUserSetInfo auf und gibt die Informationsebene 0 an.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 1008;
   USER_INFO_1008 ui;
   NET_API_STATUS nStatus;

   if (argc != 3)
   {
      fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
      exit(1);
   }
   // Fill in the USER_INFO_1008 structure member.
   // UF_SCRIPT: required.
   //
   ui.usri1008_flags = UF_SCRIPT | UF_ACCOUNTDISABLE;
   //
   // Call the NetUserSetInfo function 
   //  to disable the account, specifying level 1008.
   //
   nStatus = NetUserSetInfo(argv[1],
                            argv[2],
                            dwLevel,
                            (LPBYTE)&ui,
                            NULL);
   //
   // Display the result of the call.
   //
   if (nStatus == NERR_Success)
      fwprintf(stderr, L"User account %s has been disabled\n", argv[2]);
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);

   return 0;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile lmaccess.h (lm.h einschließen)
Bibliothek Netapi32.lib
DLL Netapi32.dll

Weitere Informationen

NetUserGetInfo

Netzwerkverwaltungsfunktionen

Übersicht über die Netzwerkverwaltung

USER_INFO_0

USER_INFO_1

USER_INFO_1003

USER_INFO_1005

USER_INFO_1006

USER_INFO_1007

USER_INFO_1008

USER_INFO_1009

USER_INFO_1010

USER_INFO_1011

USER_INFO_1012

USER_INFO_1013

USER_INFO_1014

USER_INFO_1017

USER_INFO_1020

USER_INFO_1024

USER_INFO_1051

USER_INFO_1052

USER_INFO_1053

USER_INFO_2

USER_INFO_21

USER_INFO_22

USER_INFO_4

Benutzerfunktionen