NetUserSetGroups-Funktion (lmaccess.h)

Die NetUserSetGroups-Funktion legt globale Gruppenmitgliedschaften für ein angegebenes Benutzerkonto fest.

Syntax

NET_API_STATUS NET_API_FUNCTION NetUserSetGroups(
  [in] LPCWSTR servername,
  [in] LPCWSTR username,
  [in] DWORD   level,
  [in] LPBYTE  buf,
  [in] DWORD   num_entries
);

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 Benutzers angibt, für den globale Gruppenmitgliedschaften festgelegt werden sollen. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

[in] level

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

Wert Bedeutung
0
Der buf-Parameter verweist auf ein Array von GROUP_USERS_INFO_0 Strukturen, die globale Gruppennamen angibt.
1
Der buf-Parameter verweist auf ein Array von GROUP_USERS_INFO_1 Strukturen, die globale Gruppennamen mit Attributen angibt.

[in] buf

Ein Zeiger auf den Puffer, der die Daten angibt. Weitere Informationen finden Sie unter Netzwerkverwaltungsfunktionspuffer.

[in] num_entries

Die Anzahl der Einträge, die im Array enthalten sind, auf das der buf-Parameter verweist.

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_LEVEL
Die Ebene des Systemaufrufs ist falsch. Dieser Fehler wird zurückgegeben, wenn der level-Parameter als ein anderer Wert als 0 oder 1 angegeben wurde.
ERROR_INVALID_PARAMETER
Ein übergebener Parameter war ungültig. Dieser Fehler wird zurückgegeben, wenn der parameter num_entries ungültig war.
ERROR_NOT_ENOUGH_MEMORY
Es war nicht genügend Arbeitsspeicher verfügbar, um den Vorgang abzuschließen.
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_GroupNotFound
Der Gruppenname, der vom grui0_name in der GROUP_USERS_INFO_0-Struktur oder grui1_name Member in der GROUP_USERS_INFO_1 Struktur angegeben wird, auf die der buf-Parameter verweist, ist nicht vorhanden.
NERR_InternalError
Interner Fehler.
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.

Um einem Benutzer die Mitgliedschaft in einer vorhandenen globalen Gruppe zu gewähren, können Sie die NetGroupAddUser-Funktion aufrufen.

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.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie globale Gruppenmitgliedschaften für ein Benutzerkonto mit einem Aufruf der NetUserSetGroups-Funktion festgelegt werden. Im Codebeispiel wird der grui0_name Member der GROUP_USERS_INFO_0-Struktur ausgefüllt und NetUserSetGroups aufgerufen, wobei die Informationsebene 0 angegeben wird.

#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 = 0;
   GROUP_USERS_INFO_0 gi;
   NET_API_STATUS nStatus;

   if (argc != 4)
   {
      fwprintf(stderr, L"Usage: %s \\\\ServerName UserName GroupName\n", argv[0]);
      exit(1);
   }
   //
   // Fill in the GROUP_USERS_INFO_0 structure member.
   //
   gi.grui0_name = argv[3];
   //
   // Call the NetUserSetGroups function; specify level 0.
   //
   nStatus = NetUserSetGroups(argv[1],
                              argv[2],
                              dwLevel,
                              (LPBYTE)&gi,
                              1);
   //
   // If the call succeeds, inform the user.
   //
   if (nStatus == NERR_Success)
      fwprintf(stderr, L"Group membership has been successful for %s\n", argv[2]);
   //
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);

   return 0;
}

Anforderungen

   
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

GROUP_USERS_INFO_0

GROUP_USERS_INFO_1

NetGroupAddUser

NetUserGetGroups

Netzwerkverwaltungsfunktionen

Übersicht über die Netzwerkverwaltung

Benutzerfunktionen