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 CAccessToken
proprietà 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