Classe CAccessToken

Questa classe è un wrapper per un token di accesso.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

class CAccessToken

Membri

Costruttori pubblici

Nome Descrizione
CAccessToken::~CAccessToken Distruttore.

Metodi pubblici

Nome Descrizione
CAccessToken::Attach Chiamare questo metodo per acquisire la proprietà dell'handle del token di accesso specificato.
CAccessToken::CheckTokenMembership Chiamare questo metodo per determinare se un SID specificato è abilitato nell'oggetto CAccessToken .
CAccessToken::CreateImpersonationToken Chiamare questo metodo per creare un nuovo token di accesso di rappresentazione.
CAccessToken::CreatePrimaryToken Chiamare questo metodo per creare un nuovo token primario.
CAccessToken::CreateProcessAsUser Chiamare questo metodo per creare un nuovo processo in esecuzione nel contesto di sicurezza dell'utente rappresentato dall'oggetto CAccessToken .
CAccessToken::CreateRestrictedToken Chiamare questo metodo per creare un nuovo oggetto con restrizioni CAccessToken .
CAccessToken::D etach Chiamare questo metodo per revocare la proprietà del token di accesso.
CAccessToken::D isablePrivilege Chiamare questo metodo per disabilitare un privilegio nell'oggetto CAccessToken .
CAccessToken::D isablePrivileges Chiamare questo metodo per disabilitare uno o più privilegi nell'oggetto CAccessToken .
CAccessToken::EnablePrivilege Chiamare questo metodo per abilitare un privilegio nell'oggetto CAccessToken .
CAccessToken::EnablePrivileges Chiamare questo metodo per abilitare uno o più privilegi nell'oggetto CAccessToken .
CAccessToken::GetDefaultDacl Chiamare questo metodo per restituire il CAccessToken DACL predefinito dell'oggetto.
CAccessToken::GetEffectiveToken Chiamare questo metodo per ottenere l'oggetto CAccessToken uguale al token di accesso in vigore per il thread corrente.
CAccessToken::GetGroups Chiamare questo metodo per restituire i CAccessToken gruppi di token dell'oggetto.
CAccessToken::GetHandle Chiamare questo metodo per recuperare un handle al token di accesso.
CAccessToken::GetImpersonationLevel Chiamare questo metodo per ottenere il livello di rappresentazione dal token di accesso.
CAccessToken::GetLogonSessionId Chiamare questo metodo per ottenere l'ID sessione di accesso associato all'oggetto CAccessToken .
CAccessToken::GetLogonSid Chiamare questo metodo per ottenere il SID di accesso associato all'oggetto CAccessToken .
CAccessToken::GetOwner Chiamare questo metodo per ottenere il proprietario associato all'oggetto CAccessToken .
CAccessToken::GetPrimaryGroup Chiamare questo metodo per ottenere il gruppo primario associato all'oggetto CAccessToken .
CAccessToken::GetPrivileges Chiamare questo metodo per ottenere i privilegi associati all'oggetto CAccessToken .
CAccessToken::GetProcessToken Chiamare questo metodo per inizializzare CAccessToken al token di accesso dal processo dato.
CAccessToken::GetProfile Chiamare questo metodo per ottenere l'handle che punta al profilo utente associato all'oggetto CAccessToken .
CAccessToken::GetSource Chiamare questo metodo per ottenere l'origine dell'oggetto CAccessToken .
CAccessToken::GetStatistics Chiamare questo metodo per ottenere informazioni associate all'oggetto CAccessToken .
CAccessToken::GetTerminalServicesSessionId Chiamare questo metodo per ottenere l'ID sessione di Servizi terminal associato all'oggetto CAccessToken .
CAccessToken::GetThreadToken Chiamare questo metodo per inizializzare CAccessToken con il token dal thread specificato.
CAccessToken::GetTokenId Chiamare questo metodo per ottenere l'ID token associato all'oggetto CAccessToken .
CAccessToken::GetType Chiamare questo metodo per ottenere il tipo di token dell'oggetto CAccessToken .
CAccessToken::GetUser Chiamare questo metodo per identificare l'utente associato all'oggetto CAccessToken .
CAccessToken::HKeyCurrentUser Chiamare questo metodo per ottenere l'handle che punta al profilo utente associato all'oggetto CAccessToken .
CAccessToken::Impersonate Chiamare questo metodo per assegnare una rappresentazione CAccessToken a un thread.
CAccessToken::ImpersonateLoggedOnUser Chiamare questo metodo per consentire al thread chiamante di rappresentare il contesto di sicurezza di un utente connesso.
CAccessToken::IsTokenRestricted Chiamare questo metodo per verificare se l'oggetto CAccessToken contiene un elenco di SID limitati.
CAccessToken::LoadUserProfile Chiamare questo metodo per caricare il profilo utente associato all'oggetto CAccessToken .
CAccessToken::LogonUser Chiamare questo metodo per creare una sessione di accesso per l'utente associato alle credenziali specificate.
CAccessToken::OpenCOMClientToken Chiamare questo metodo dall'interno di un server COM che gestisce una chiamata da un client per inizializzare CAccessToken con il token di accesso dal client COM.
CAccessToken::OpenNamedPipeClientToken Chiamare questo metodo dall'interno di un server che accetta richieste tramite una named pipe per inizializzare CAccessToken con il token di accesso dal client.
CAccessToken::OpenRPCClientToken Chiamare questo metodo dall'interno di un server che gestisce una chiamata da un client RPC per inizializzare CAccessToken con il token di accesso dal client.
CAccessToken::OpenThreadToken Chiamare questo metodo per impostare il livello di rappresentazione e quindi inizializzare CAccessToken con il token dal thread specificato.
CAccessToken::P rivilegeCheck Chiamare questo metodo per determinare se un set specificato di privilegi è abilitato nell'oggetto CAccessToken .
CAccessToken::Revert Chiamare questo metodo per arrestare un thread che usa un token di rappresentazione.
CAccessToken::SetDefaultDacl Chiamare questo metodo per impostare l'elenco DACL predefinito dell'oggetto CAccessToken .
CAccessToken::SetOwner Chiamare questo metodo per impostare il proprietario dell'oggetto CAccessToken .
CAccessToken::SetPrimaryGroup Chiamare questo metodo per impostare il gruppo primario dell'oggetto CAccessToken .

Osservazioni:

Un token di accesso è un oggetto che descrive il contesto di sicurezza di un processo o di un thread e viene allocato a ogni utente connesso a un sistema Windows.

Per un'introduzione al modello di controllo di accesso in Windows, vedere Controllo di accesso in Windows SDK.

Requisiti

Intestazione: atlsecurity.h

CAccessToken::Attach

Chiamare questo metodo per acquisire la proprietà dell'handle del token di accesso specificato.

void Attach(HANDLE hToken) throw();

Parametri

hToken
Handle per il token di accesso.

Osservazioni:

Nelle compilazioni di debug si verificherà un errore di asserzione se l'oggetto CAccessToken ha già la proprietà di un token di accesso.

CAccessToken::~CAccessToken

Distruttore.

virtual ~CAccessToken() throw();

Osservazioni:

Libera tutte le risorse allocate.

CAccessToken::CheckTokenMembership

Chiamare questo metodo per determinare se un SID specificato è abilitato nell'oggetto CAccessToken .

bool CheckTokenMembership(
    const CSid& rSid,
    bool* pbIsMember) const throw(...);

Parametri

rSid
Riferimento a un oggetto Classe CSid.

pbIsMember
Puntatore a una variabile che riceve i risultati del controllo.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il CheckTokenMembership metodo verifica la presenza del SID nei SID dell'utente e dei SID del gruppo del token di accesso. Se il SID è presente e ha l'attributo SE_GROUP_ENABLED, pbIsMember è impostato su TRUE; in caso contrario, è impostato su FALSE.

Nelle compilazioni di debug si verificherà un errore di asserzione se pbIsMember non è un puntatore valido.

Nota

L'oggetto CAccessToken deve essere un token di rappresentazione e non un token primario.

CAccessToken::CreateImpersonationToken

Chiamare questo metodo per creare un token di accesso di rappresentazione.

bool CreateImpersonationToken(
    CAccessToken* pImp,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) const throw(...);

Parametri

Sfruttatore
Puntatore al nuovo CAccessToken oggetto.

sil
Specifica un SECURITY_IMPERSONATION_LEVEL tipo enumerato che fornisce il livello di rappresentazione del nuovo token.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

CreateImpersonationToken chiama DuplicateToken per creare un nuovo token di rappresentazione.

CAccessToken::CreatePrimaryToken

Chiamare questo metodo per creare un nuovo token primario.

bool CreatePrimaryToken(
    CAccessToken* pPri,
    DWORD dwDesiredAccess = MAXIMUM_ALLOWED,
    const CSecurityAttributes* pTokenAttributes = NULL) const throw(...);

Parametri

pPri
Puntatore al nuovo CAccessToken oggetto.

dwDesiredAccess
Specifica i diritti di accesso richiesti per il nuovo token. Il valore predefinito, MAXIMUM_ALLOWED, richiede tutti i diritti di accesso validi per il chiamante. Per altre informazioni sui diritti di accesso, vedere Diritti di accesso e maschere di accesso.

pTokenAttributes
Puntatore a una struttura SECURITY_ATTRIBUTES che specifica un descrittore di sicurezza per il nuovo token e determina se i processi figlio possono ereditare il token. Se pTokenAttributes è NULL, il token ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

CreatePrimaryToken chiama DuplicateTokenEx per creare un nuovo token primario.

CAccessToken::CreateProcessAsUser

Chiamare questo metodo per creare un nuovo processo in esecuzione nel contesto di sicurezza dell'utente rappresentato dall'oggetto CAccessToken .

bool CreateProcessAsUser(
    LPCTSTR pApplicationName,
    LPTSTR pCommandLine,
    LPPROCESS_INFORMATION pProcessInformation,
    LPSTARTUPINFO pStartupInfo,
    DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS,
    bool bLoadProfile = false,
    const CSecurityAttributes* pProcessAttributes = NULL,
    const CSecurityAttributes* pThreadAttributes = NULL,
    bool bInherit = false,
    LPCTSTR pCurrentDirectory = NULL) throw();

Parametri

pApplicationName
Puntatore a una stringa con terminazione Null che specifica il modulo da eseguire. Questo parametro potrebbe non essere NULL.

pCommandLine
Puntatore a una stringa con terminazione Null che specifica la riga di comando da eseguire.

pProcessInformation
Puntatore a una struttura PROCESS_INFORMATION che riceve informazioni di identificazione sul nuovo processo.

pStartupInfo
Puntatore a una struttura STARTUPINFO che specifica la modalità di visualizzazione della finestra principale per il nuovo processo.

dwCreationFlags
Specifica flag aggiuntivi che controllano la classe di priorità e la creazione del processo. Per un elenco di flag, vedere la funzione Win32 CreateProcessAsUser .

bLoadProfile
Se TRUE, il profilo dell'utente viene caricato con LoadUserProfile.

pProcessAttributes
Puntatore a una struttura SECURITY_ATTRIBUTES che specifica un descrittore di sicurezza per il nuovo processo e determina se i processi figlio possono ereditare l'handle restituito. Se pProcessAttributes è NULL, il processo ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato.

pThreadAttributes
Puntatore a una struttura SECURITY_ATTRIBUTES che specifica un descrittore di sicurezza per il nuovo thread e determina se i processi figlio possono ereditare l'handle restituito. Se pThreadAttributes è NULL, il thread ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato.

bInherit
Indica se il nuovo processo eredita gli handle dal processo chiamante. Se TRUE, ogni handle aperto ereditabile nel processo chiamante viene ereditato dal nuovo processo. Gli handle ereditati hanno lo stesso valore e gli stessi privilegi di accesso degli handle originali.

pCurrentDirectory
Puntatore a una stringa con terminazione Null che specifica l'unità e la directory correnti per il nuovo processo. La stringa deve essere un percorso completo che include una lettera di unità. Se questo parametro è NULL, il nuovo processo avrà la stessa unità corrente e la stessa directory del processo chiamante.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

CreateProcessAsUser usa la CreateProcessAsUser funzione Win32 per creare un nuovo processo eseguito nel contesto di sicurezza dell'utente rappresentato dall'oggetto CAccessToken . Per una descrizione completa dei parametri necessari, vedere la descrizione della funzione CreateProcessAsUser .

Affinché questo metodo abbia esito positivo, l'oggetto CAccessToken deve contenere AssignPrimaryToken (a meno che non sia un token con restrizioni) e privilegi IncreaseQuota.

CAccessToken::CreateRestrictedToken

Chiamare questo metodo per creare un nuovo oggetto con restrizioni CAccessToken .

bool CreateRestrictedToken(
    CAccessToken* pRestrictedToken,
    const CTokenGroups& SidsToDisable,
    const CTokenGroups& SidsToRestrict,
    const CTokenPrivileges& PrivilegesToDelete = CTokenPrivileges()) const throw(...);

Parametri

pRestrictedToken
Nuovo oggetto con restrizioni CAccessToken .

SidsToDisable
Oggetto CTokenGroups che specifica i SID di sola negazione.

SidsToRestrict
Oggetto CTokenGroups che specifica i SID limitati.

PrivilegesToDelete
Oggetto CTokenPrivileges che specifica i privilegi da eliminare nel token con restrizioni. Il valore predefinito crea un oggetto vuoto.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

CreateRestrictedToken usa la funzione CreateRestrictedToken Win32 per creare un nuovo CAccessToken oggetto, con restrizioni.

Importante

Quando si usa CreateRestrictedToken, assicurarsi che il token esistente sia valido (e non immesso dall'utente) e SidsToDisable e PrivilegesToDelete siano entrambi validi (e non immessi dall'utente). Se il metodo restituisce FALSE, negare la funzionalità.

CAccessToken::D etach

Chiamare questo metodo per revocare la proprietà del token di accesso.

HANDLE Detach() throw();

Valore restituito

Restituisce l'handle all'oggetto CAccessToken che è stato scollegato.

Osservazioni:

Questo metodo revoca la CAccessTokenproprietà del token di accesso.

CAccessToken::D isablePrivilege

Chiamare questo metodo per disabilitare un privilegio nell'oggetto CAccessToken .

bool DisablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parametri

pszPrivilege
Puntatore a una stringa contenente il privilegio da disabilitare nell'oggetto CAccessToken .

pPreviousState
Puntatore a un CTokenPrivileges oggetto che conterrà lo stato precedente dei privilegi.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::D isablePrivileges

Chiamare questo metodo per disabilitare uno o più privilegi nell'oggetto CAccessToken .

bool DisablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parametri

rPrivileges
Puntatore a una matrice di stringhe contenente i privilegi da disabilitare nell'oggetto CAccessToken .

pPreviousState
Puntatore a un CTokenPrivileges oggetto che conterrà lo stato precedente dei privilegi.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::EnablePrivilege

Chiamare questo metodo per abilitare un privilegio nell'oggetto CAccessToken .

bool EnablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parametri

pszPrivilege
Puntatore a una stringa contenente il privilegio da abilitare nell'oggetto CAccessToken .

pPreviousState
Puntatore a un CTokenPrivileges oggetto che conterrà lo stato precedente dei privilegi.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::EnablePrivileges

Chiamare questo metodo per abilitare uno o più privilegi nell'oggetto CAccessToken .

bool EnablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parametri

rPrivileges
Puntatore a una matrice di stringhe contenente i privilegi da abilitare nell'oggetto CAccessToken .

pPreviousState
Puntatore a un CTokenPrivileges oggetto che conterrà lo stato precedente dei privilegi.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetDefaultDacl

Chiamare questo metodo per restituire il CAccessToken DACL predefinito dell'oggetto.

bool GetDefaultDacl(CDacl* pDacl) const throw(...);

Parametri

pDacl
Puntatore all'oggetto Classe CDacl che riceverà il CAccessToken DACL predefinito dell'oggetto.

Valore restituito

Restituisce TRUE se l'oggetto DACL predefinito è stato ripristinato, false in caso contrario.

CAccessToken::GetEffectiveToken

Chiamare questo metodo per ottenere l'oggetto CAccessToken uguale al token di accesso in vigore per il thread corrente.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Parametri

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetGroups

Chiamare questo metodo per restituire i CAccessToken gruppi di token dell'oggetto.

bool GetGroups(CTokenGroups* pGroups) const throw(...);

Parametri

pGroups
Puntatore all'oggetto Classe CTokenGroups che riceverà le informazioni sul gruppo.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetHandle

Chiamare questo metodo per recuperare un handle al token di accesso.

HANDLE GetHandle() const throw();

Valore restituito

Restituisce un handle al CAccessToken token di accesso dell'oggetto.

CAccessToken::GetImpersonationLevel

Chiamare questo metodo per ottenere il livello di rappresentazione dal token di accesso.

bool GetImpersonationLevel(
    SECURITY_IMPERSONATION_LEVEL* pImpersonationLevel) const throw(...);

Parametri

pImpersonationLevel
Puntatore a un tipo di enumerazione SECURITY_IMPERSONATION_LEVEL che riceverà le informazioni sul livello di rappresentazione.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetLogonSessionId

Chiamare questo metodo per ottenere l'ID sessione di accesso associato all'oggetto CAccessToken .

bool GetLogonSessionId(LUID* pluid) const throw(...);

Parametri

pluid
Puntatore a un LUID che riceverà l'ID sessione di accesso.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Nelle compilazioni di debug si verificherà un errore di asserzione se pluid è un valore non valido.

CAccessToken::GetLogonSid

Chiamare questo metodo per ottenere il SID di accesso associato all'oggetto CAccessToken .

bool GetLogonSid(CSid* pSid) const throw(...);

Parametri

Psid
Puntatore a un oggetto Classe CSid.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Nelle compilazioni di debug si verificherà un errore di asserzione se pSid è un valore non valido.

CAccessToken::GetOwner

Chiamare questo metodo per ottenere il proprietario associato all'oggetto CAccessToken .

bool GetOwner(CSid* pSid) const throw(...);

Parametri

Psid
Puntatore a un oggetto Classe CSid.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il proprietario viene impostato per impostazione predefinita su tutti gli oggetti creati mentre questo token di accesso è attivo.

CAccessToken::GetPrimaryGroup

Chiamare questo metodo per ottenere il gruppo primario associato all'oggetto CAccessToken .

bool GetPrimaryGroup(CSid* pSid) const throw(...);

Parametri

Psid
Puntatore a un oggetto Classe CSid.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il gruppo viene impostato per impostazione predefinita su tutti gli oggetti creati mentre questo token di accesso è attivo.

CAccessToken::GetPrivileges

Chiamare questo metodo per ottenere i privilegi associati all'oggetto CAccessToken .

bool GetPrivileges(CTokenPrivileges* pPrivileges) const throw(...);

Parametri

pPrivileges
Puntatore a un oggetto Classe CTokenPrivileges che riceverà i privilegi.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetProcessToken

Chiamare questo metodo per inizializzare CAccessToken al token di accesso dal processo dato.

bool GetProcessToken(DWORD dwDesiredAccess, HANDLE hProcess = NULL) throw();

Parametri

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

hProcess
Gestisce il processo il cui il token di accesso è aperto. Se viene utilizzato il valore predefinito NULL, viene utilizzato il processo corrente.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Chiama la funzione Win32 OpenProcessToken .

CAccessToken::GetProfile

Chiamare questo metodo per ottenere l'handle che punta al profilo utente associato all'oggetto CAccessToken .

HANDLE GetProfile() const throw();

Valore restituito

Restituisce un handle che punta al profilo utente o NULL se non esiste alcun profilo.

CAccessToken::GetSource

Chiamare questo metodo per ottenere l'origine dell'oggetto CAccessToken .

bool GetSource(TOKEN_SOURCE* pSource) const throw(...);

Parametri

pSource
Puntatore a una struttura TOKEN_SOURCE .

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetStatistics

Chiamare questo metodo per ottenere informazioni associate all'oggetto CAccessToken .

bool GetStatistics(TOKEN_STATISTICS* pStatistics) const throw(...);

Parametri

pStatistics
Puntatore a una struttura TOKEN_STATISTICS .

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetTerminalServicesSessionId

Chiamare questo metodo per ottenere l'ID sessione di Servizi terminal associato all'oggetto CAccessToken .

bool GetTerminalServicesSessionId(DWORD* pdwSessionId) const throw(...);

Parametri

pdwSessionId
ID sessione di Servizi terminal.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetThreadToken

Chiamare questo metodo per inizializzare CAccessToken con il token dal thread specificato.

bool GetThreadToken(
    DWORD dwDesiredAccess,
    HANDLE hThread = NULL,
    bool bOpenAsSelf = true) throw();

Parametri

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

hThread
Handle per il thread il cui token di accesso viene aperto.

bOpenAsSelf
Indica se il controllo di accesso deve essere eseguito sul contesto di sicurezza del thread che chiama il GetThreadToken metodo o sul contesto di sicurezza del processo per il thread chiamante.

Se questo parametro è FALSE, il controllo di accesso viene eseguito usando il contesto di sicurezza per il thread chiamante. Se il thread rappresenta un client, questo contesto di sicurezza può essere quello di un processo client. Se questo parametro è TRUE, il controllo di accesso viene eseguito usando il contesto di sicurezza del processo per il thread chiamante.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetTokenId

Chiamare questo metodo per ottenere l'ID token associato all'oggetto CAccessToken .

bool GetTokenId(LUID* pluid) const throw(...);

Parametri

pluid
Puntatore a un LUID che riceverà l'ID token.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::GetType

Chiamare questo metodo per ottenere il tipo di token dell'oggetto CAccessToken .

bool GetType(TOKEN_TYPE* pType) const throw(...);

Parametri

pType
Indirizzo della variabile TOKEN_TYPE che, in caso di esito positivo, riceve il tipo del token.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il tipo di enumerazione TOKEN_TYPE contiene valori che distinguono tra un token primario e un token di rappresentazione.

CAccessToken::GetUser

Chiamare questo metodo per identificare l'utente associato all'oggetto CAccessToken .

bool GetUser(CSid* pSid) const throw(...);

Parametri

Psid
Puntatore a un oggetto Classe CSid.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CAccessToken::HKeyCurrentUser

Chiamare questo metodo per ottenere l'handle che punta al profilo utente associato all'oggetto CAccessToken .

HKEY HKeyCurrentUser() const throw();

Valore restituito

Restituisce un handle che punta al profilo utente o NULL se non esiste alcun profilo.

CAccessToken::Impersonate

Chiamare questo metodo per assegnare una rappresentazione CAccessToken a un thread.

bool Impersonate(HANDLE hThread = NULL) const throw(...);

Parametri

hThread
Handle per il thread a cui assegnare il token di rappresentazione. Questo handle deve essere stato aperto con diritti di accesso TOKEN_IMPERSONATE. Se hThread è NULL, il metodo interrompe l'uso di un token di rappresentazione da parte del thread.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Nelle compilazioni di debug si verificherà un errore di asserzione se CAccessToken non dispone di un puntatore valido a un token.

La classe CAutoRevertImpersonation può essere usata per ripristinare automaticamente i token di accesso rappresentati.

CAccessToken::ImpersonateLoggedOnUser

Chiamare questo metodo per consentire al thread chiamante di rappresentare il contesto di sicurezza di un utente connesso.

bool ImpersonateLoggedOnUser() const throw(...);

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Importante

Se una chiamata a una funzione di rappresentazione ha esito negativo per qualsiasi motivo, il client non viene rappresentato e la richiesta client viene effettuata nel contesto di sicurezza del processo da cui è stata effettuata la chiamata. Se il processo viene eseguito come account con privilegi elevati o come membro di un gruppo amministrativo, l'utente potrebbe essere in grado di eseguire azioni che altrimenti non sarebbe consentito. Pertanto, il valore restituito per questa funzione deve essere sempre confermato.

CAccessToken::IsTokenRestricted

Chiamare questo metodo per verificare se l'oggetto CAccessToken contiene un elenco di SID limitati.

bool IsTokenRestricted() const throw();

Valore restituito

Restituisce TRUE se l'oggetto contiene un elenco di SID limitati, FALSE se non sono presenti SID limitati o se il metodo ha esito negativo.

CAccessToken::LoadUserProfile

Chiamare questo metodo per caricare il profilo utente associato all'oggetto CAccessToken .

bool LoadUserProfile() throw(...);

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Nelle compilazioni di debug si verificherà un errore di asserzione se CAccessToken non contiene un token valido o se esiste già un profilo utente.

CAccessToken::LogonUser

Chiamare questo metodo per creare una sessione di accesso per l'utente associato alle credenziali specificate.

bool LogonUser(
    LPCTSTR pszUserName,
    LPCTSTR pszDomain,
    LPCTSTR pszPassword,
    DWORD dwLogonType = LOGON32_LOGON_INTERACTIVE,
    DWORD dwLogonProvider = LOGON32_PROVIDER_DEFAULT) throw();

Parametri

pszUserName
Puntatore a una stringa con terminazione Null che specifica il nome utente. Si tratta del nome dell'account utente a cui accedere.

pszDomain
Puntatore a una stringa con terminazione Null che specifica il nome del dominio o del server il cui database account contiene l'account pszUserName .

pszPassword
Puntatore a una stringa con terminazione Null che specifica la password non crittografata per l'account utente specificato da pszUserName.

dwLogonType
Specifica il tipo di operazione di accesso da eseguire. Per altri dettagli, vedere LogonUser .

dwLogonProvider
Specifica il provider di accesso. Per altri dettagli, vedere LogonUser .

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il token di accesso risultante dall'accesso verrà associato all'oggetto CAccessToken. Affinché questo metodo abbia esito positivo, l'oggetto CAccessToken deve contenere SE_TCB_NAME privilegi, identificando il titolare come parte della base del computer attendibile. Per altre informazioni sui privilegi necessari, vedere LogonUser .

CAccessToken::OpenCOMClientToken

Chiamare questo metodo dall'interno di un server COM che gestisce una chiamata da un client per inizializzare CAccessToken con il token di accesso dal client COM.

bool OpenCOMClientToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parametri

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

bImpersonate
Se TRUE, il thread corrente rappresenta il client COM chiamante se la chiamata viene completata correttamente. Se FALSE, il token di accesso verrà aperto, ma il thread non avrà un token di rappresentazione al termine della chiamata.

bOpenAsSelf
Indica se il controllo di accesso deve essere eseguito sul contesto di sicurezza del thread che chiama il metodo GetThreadToken o sul contesto di sicurezza del processo per il thread chiamante.

Se questo parametro è FALSE, il controllo di accesso viene eseguito usando il contesto di sicurezza per il thread chiamante. Se il thread rappresenta un client, questo contesto di sicurezza può essere quello di un processo client. Se questo parametro è TRUE, il controllo di accesso viene eseguito usando il contesto di sicurezza del processo per il thread chiamante.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

La classe CAutoRevertImpersonation può essere usata per ripristinare automaticamente i token di accesso rappresentati creati impostando il flag bImpersonate su TRUE.

CAccessToken::OpenNamedPipeClientToken

Chiamare questo metodo dall'interno di un server che accetta richieste tramite una named pipe per inizializzare CAccessToken con il token di accesso dal client.

bool OpenNamedPipeClientToken(
    HANDLE hPipe,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parametri

hPipe
Handle in una named pipe.

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

bImpersonate
Se TRUE, il thread corrente rappresenta il client della pipe chiamante se la chiamata viene completata correttamente. Se FALSE, il token di accesso verrà aperto, ma il thread non avrà un token di rappresentazione al termine della chiamata.

bOpenAsSelf
Indica se il controllo di accesso deve essere eseguito sul contesto di sicurezza del thread che chiama il metodo GetThreadToken o sul contesto di sicurezza del processo per il thread chiamante.

Se questo parametro è FALSE, il controllo di accesso viene eseguito usando il contesto di sicurezza per il thread chiamante. Se il thread rappresenta un client, questo contesto di sicurezza può essere quello di un processo client. Se questo parametro è TRUE, il controllo di accesso viene eseguito usando il contesto di sicurezza del processo per il thread chiamante.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

La classe CAutoRevertImpersonation può essere usata per ripristinare automaticamente i token di accesso rappresentati creati impostando il flag bImpersonate su TRUE.

CAccessToken::OpenRPCClientToken

Chiamare questo metodo dall'interno di un server che gestisce una chiamata da un client RPC per inizializzare CAccessToken con il token di accesso dal client.

bool OpenRPCClientToken(
    RPC_BINDING_HANDLE BindingHandle,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parametri

BindingHandle
Handle di associazione nel server che rappresenta un'associazione a un client.

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

bImpersonate
Se TRUE, il thread corrente rappresenta il client RPC chiamante se la chiamata viene completata correttamente. Se FALSE, il token di accesso verrà aperto, ma il thread non avrà un token di rappresentazione al termine della chiamata.

bOpenAsSelf
Indica se il controllo di accesso deve essere eseguito sul contesto di sicurezza del thread che chiama il metodo GetThreadToken o sul contesto di sicurezza del processo per il thread chiamante.

Se questo parametro è FALSE, il controllo di accesso viene eseguito usando il contesto di sicurezza per il thread chiamante. Se il thread rappresenta un client, questo contesto di sicurezza può essere quello di un processo client. Se questo parametro è TRUE, il controllo di accesso viene eseguito usando il contesto di sicurezza del processo per il thread chiamante.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

La classe CAutoRevertImpersonation può essere usata per ripristinare automaticamente i token di accesso rappresentati creati impostando il flag bImpersonate su TRUE.

CAccessToken::OpenThreadToken

Chiamare questo metodo per impostare il livello di rappresentazione e quindi inizializzare CAccessToken con il token dal thread specificato.

bool OpenThreadToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) throw(...);

Parametri

dwDesiredAccess
Specifica una maschera di accesso che specifica i tipi di accesso richiesti per il token di accesso. Questi tipi di accesso richiesti sono confrontati con il DACL del token per determinare quali accessi vengono concessi o negati.

bImpersonate
Se TRUE, il thread verrà lasciato al livello di rappresentazione richiesto al termine di questo metodo. Se FALSE, il thread verrà ripristinato al livello di rappresentazione originale.

bOpenAsSelf
Indica se il controllo di accesso deve essere eseguito sul contesto di sicurezza del thread che chiama il metodo GetThreadToken o sul contesto di sicurezza del processo per il thread chiamante.

Se questo parametro è FALSE, il controllo di accesso viene eseguito usando il contesto di sicurezza per il thread chiamante. Se il thread rappresenta un client, questo contesto di sicurezza può essere quello di un processo client. Se questo parametro è TRUE, il controllo di accesso viene eseguito usando il contesto di sicurezza del processo per il thread chiamante.

sil
Specifica un SECURITY_IMPERSONATION_LEVEL tipo enumerato che fornisce il livello di rappresentazione del token.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

OpenThreadToken è simile a CAccessToken::GetThreadToken, ma imposta il livello di rappresentazione prima di inizializzare dal CAccessToken token di accesso del thread.

La classe CAutoRevertImpersonation può essere usata per ripristinare automaticamente i token di accesso rappresentati creati impostando il flag bImpersonate su TRUE.

CAccessToken::P rivilegeCheck

Chiamare questo metodo per determinare se un set specificato di privilegi è abilitato nell'oggetto CAccessToken .

bool PrivilegeCheck(
    PPRIVILEGE_SET RequiredPrivileges,
    bool* pbResult) const throw();

Parametri

RequiredPrivileges
Puntatore a una struttura PRIVILEGE_SET .

pbResult
Puntatore a un valore impostato dal metodo per indicare se uno o tutti i privilegi specificati sono abilitati nell'oggetto CAccessToken .

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Quando PrivilegeCheck viene restituito, il Attributes membro di ogni struttura LUID_AND_ATTRIBUTES viene impostato su SE_PRIVILEGE_USED_FOR_ACCESS se il privilegio corrispondente è abilitato. Questo metodo chiama la funzione PrivilegeCheck Win32.

CAccessToken::Revert

Chiamare questo metodo per impedire a un thread di usare un token di rappresentazione.

bool Revert(HANDLE hThread = NULL) const throw();

Parametri

hThread
Gestire il thread per ripristinare la rappresentazione. Se hThread è NULL, viene utilizzato il thread corrente.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

La riversione dei token di rappresentazione può essere eseguita automaticamente con la classe CAutoRevertImpersonation.

CAccessToken::SetDefaultDacl

Chiamare questo metodo per impostare l'elenco DACL predefinito dell'oggetto CAccessToken .

bool SetDefaultDacl(const CDacl& rDacl) throw(...);

Parametri

rDacl
Nuove informazioni predefinite sulla classe CDacl.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

L'elenco DACL predefinito è l'elenco DACL usato per impostazione predefinita quando vengono creati nuovi oggetti con questo token di accesso.

CAccessToken::SetOwner

Chiamare questo metodo per impostare il proprietario dell'oggetto CAccessToken .

bool SetOwner(const CSid& rSid) throw(...);

Parametri

rSid
Oggetto Classe CSid contenente le informazioni sul proprietario.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il proprietario è il proprietario predefinito usato per i nuovi oggetti creati mentre questo token di accesso è attivo.

CAccessToken::SetPrimaryGroup

Chiamare questo metodo per impostare il gruppo primario dell'oggetto CAccessToken .

bool SetPrimaryGroup(const CSid& rSid) throw(...);

Parametri

rSid
Oggetto Classe CSid contenente le informazioni sul gruppo primario.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Il gruppo primario è il gruppo predefinito per i nuovi oggetti creati mentre questo token di accesso è attivo.

Vedi anche

Esempio di ATLSecurity
Token di accesso
Cenni preliminari sulla classe