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 |
---|---|
|
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". |
|
Gibt detaillierte Informationen zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_1-Struktur . |
|
Gibt Informationen der ersten Ebene und zusätzliche Attribute zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_2-Struktur . |
|
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. |
|
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 . |
|
Gibt einen unidirektionale verschlüsselten LAN-Manager 2 an. x-kompatibles Kennwort. Der buf-Parameter verweist auf eine USER_INFO_21-Struktur . |
|
Gibt detaillierte Informationen zum Benutzerkonto an. Der buf-Parameter verweist auf eine USER_INFO_22-Struktur . |
|
Gibt ein Benutzerkennwort an. Der buf-Parameter verweist auf eine USER_INFO_1003-Struktur . |
|
Gibt eine Benutzerberechtigungsstufe an. Der buf-Parameter verweist auf eine USER_INFO_1005-Struktur . |
|
Gibt den Pfad des Basisverzeichnisses für den Benutzer an. Der buf-Parameter verweist auf eine USER_INFO_1006-Struktur . |
|
Gibt einen Kommentar an, der dem Benutzerkonto zugeordnet werden soll. Der buf-Parameter verweist auf eine USER_INFO_1007-Struktur . |
|
Gibt Benutzerkontoattribute an. Der buf-Parameter verweist auf eine USER_INFO_1008-Struktur . |
|
Gibt den Pfad für die Anmeldeskriptdatei des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1009-Struktur . |
|
Gibt die Operatorberechtigungen des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1010-Struktur . |
|
Gibt den vollständigen Namen des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1011-Struktur . |
|
Gibt einen Kommentar an, der dem Benutzer zugeordnet werden soll. Der buf-Parameter verweist auf eine USER_INFO_1012-Struktur . |
|
Gibt die Namen der Arbeitsstationen an, von denen sich der Benutzer anmelden kann. Der buf-Parameter verweist auf eine USER_INFO_1014-Struktur . |
|
Gibt an, wann das Benutzerkonto abläuft. Der buf-Parameter verweist auf eine USER_INFO_1017-Struktur . |
|
Gibt die Zeiten an, zu denen sich der Benutzer anmelden kann. Der buf-Parameter verweist auf eine USER_INFO_1020-Struktur . |
|
Gibt den Länder-/Regionscode des Benutzers an. Der buf-Parameter verweist auf eine USER_INFO_1024-Struktur . |
|
Gibt den relativen Bezeichner einer globalen Gruppe an, die den registrierten Benutzer darstellt. Der buf-Parameter verweist auf eine USER_INFO_1051-Struktur . |
|
Gibt den Pfad zum Profil eines Netzwerkbenutzers an. Der buf-Parameter verweist auf eine USER_INFO_1052-Struktur . |
|
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 |
---|---|
|
Der Benutzer besitzt keinen Zugriff auf die angeforderten Informationen. |
|
Einer der Funktionsparameter ist ungültig. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise". |
|
Der Computername ist ungültig. |
|
Der Vorgang ist nur auf dem primären Domänencontroller der Domäne zulässig. |
|
Der Vorgang ist für bestimmte spezielle Gruppen nicht zulässig, z. B. Benutzergruppen, Administratorgruppen, lokale Gruppen oder Gastgruppen. |
|
Der Vorgang ist für das letzte Administratorkonto nicht zulässig. |
|
Der Freigabename oder das Kennwort ist ungültig. |
|
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.) |
|
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 |