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 |
---|---|
|
Il parametro buf punta a una matrice di strutture GROUP_USERS_INFO_0 che specifica i nomi dei gruppi globali. |
|
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 |
---|---|
|
L'utente non ha accesso alle informazioni richieste. |
|
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. |
|
Parametro passato non valido. Questo errore viene restituito se il parametro num_entries non è valido. |
|
Memoria insufficiente per completare l'operazione. |
|
Il nome del computer non è valido. |
|
L'operazione è consentita solo nel controller di dominio primario del dominio. |
|
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. |
|
An internal error occurred. |
|
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 |