Funzione NetUserSetGroups (lmaccess.h)

La funzione NetUserSetGroups imposta le appartenenze a gruppi globali per un account utente specificato.

Sintassi

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

Parametri

[in] servername

Puntatore a una stringa costante che specifica il nome DNS o NetBIOS del server remoto in cui deve essere eseguita la funzione. Se questo parametro è NULL, viene utilizzato il computer locale.

[in] username

Puntatore a una stringa costante che specifica il nome dell'utente per cui impostare le appartenenze a gruppi globali. Per altre informazioni, vedere la sezione Osservazioni.

[in] level

Livello informativo dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
0
Il parametro buf punta a una matrice di strutture GROUP_USERS_INFO_0 che specifica i nomi dei gruppi globali.
1
Il parametro buf punta a una matrice di strutture GROUP_USERS_INFO_1 che specifica i nomi dei gruppi globali con attributi.

[in] buf

Puntatore al buffer che specifica i dati. Per altre informazioni, vedere Buffer delle funzioni di gestione di rete.

[in] num_entries

Numero di voci contenute nella matrice a cui punta il parametro buf .

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene NERR_Success.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'utente non ha accesso alle informazioni richieste.
ERROR_INVALID_LEVEL
Il livello di chiamata di sistema non è corretto. Questo errore viene restituito se il parametro di livello è stato specificato come valore diverso da 0 o 1.
ERROR_INVALID_PARAMETER
Parametro passato non valido. Questo errore viene restituito se il parametro num_entries non è valido.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente per completare l'operazione.
NERR_InvalidComputer
Il nome del computer non è valido.
NERR_NotPrimary
L'operazione è consentita solo nel controller di dominio primario del dominio.
NERR_GroupNotFound
Il nome del gruppo specificato dal grui0_name nella struttura GROUP_USERS_INFO_0 o grui1_name membro nella struttura GROUP_USERS_INFO_1 a cui punta il parametro buf non esiste.
NERR_InternalError
An internal error occurred.
NERR_UserNotFound
Impossibile trovare il nome utente.

Commenti

Se si esegue la programmazione per Active Directory, è possibile chiamare determinati metodi ADSI (Active Directory Service Interface) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni utente di gestione di rete. Per altre informazioni, vedere IADsUser e IADsComputer.

Se si chiama questa funzione in un controller di dominio che esegue Active Directory, l'accesso viene consentito o negato in base all'elenco di controllo di accesso (ACL) per l'oggetto a protezione diretta. L'elenco di controllo di accesso predefinito consente solo agli amministratori di dominio e agli operatori account di chiamare questa funzione. In un server membro o in una workstation, solo gli amministratori e Power Users possono chiamare questa funzione. Per altre informazioni, vedere Requisiti di sicurezza per le funzioni di gestione di rete. Per altre informazioni su ACL, ACL e token di accesso, vedere Controllo di accesso Model.

Il descrittore di sicurezza dell'oggetto User viene utilizzato per eseguire il controllo di accesso per questa funzione.

Per concedere a un utente l'appartenenza a un gruppo globale esistente, è possibile chiamare la funzione NetGroupAddUser .

I nomi degli account utente sono limitati a 20 caratteri e i nomi dei gruppi sono limitati a 256 caratteri. Inoltre, i nomi di account non possono essere terminati da un punto e non possono includere virgole o uno dei caratteri stampabili seguenti: ", /, , [, ], :, |, <, , >+, =, ;, ?, *. I nomi non possono includere anche caratteri nell'intervallo 1-31, che non sono stampabili.

Esempio

L'esempio di codice seguente illustra come impostare le appartenenze a gruppi globali per un account utente con una chiamata alla funzione NetUserSetGroups . Nell'esempio di codice viene compilato il membro grui0_name della struttura GROUP_USERS_INFO_0 e viene chiamato NetUserSetGroups, specificando il livello di informazioni 0.

#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;
}

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lmaccess.h (include Lm.h)
Libreria Netapi32.lib
DLL Netapi32.dll

Vedi anche

GROUP_USERS_INFO_0

GROUP_USERS_INFO_1

NetGroupAddUser

NetUserGetGroups

Funzioni di gestione di rete

Panoramica della gestione della rete

Funzioni utente