Partilhar via


Classe CAccessToken

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe é um wrapper para um token de acesso.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

class CAccessToken

Membros

Construtores Públicos

Nome Description
CAccessToken::~CAccessToken O destruidor.

Métodos Públicos

Nome Description
CAccessToken::Anexar Chame este método para assumir a propriedade do handle dado do token de acesso.
CAccessToken::CheckTokenMembership Chame este método para determinar se um SID especificado está ativado no CAccessToken objeto.
CAccessToken::CreateImpersonationToken Chame este método para criar um novo token de acesso de personificação.
CAccessToken::CreatePrimaryToken Chame este método para criar um novo token primário.
CAccessToken::CreateProcessAsUser Chame este método para criar um novo processo a correr no contexto de segurança do utilizador representado pelo CAccessToken objeto.
CAccessToken::CreateRestrictedToken Chame este método para criar um novo objeto restrito CAccessToken .
CAccessToken::D etach Chame este método para revogar a propriedade do token de acesso.
CAccessToken::D isablePrivilege Chame este método para desativar um privilégio no CAccessToken objeto.
CAccessToken::D isablePrivileges Chame este método para desativar um ou mais privilégios no CAccessToken objeto.
CAccessToken::EnablePrivilege Chame este método para ativar um privilégio no CAccessToken objeto.
CAccessToken::EnablePrivileges Chame este método para ativar um ou mais privilégios no CAccessToken objeto.
CAccessToken::GetDefaultDacl Chame este método para devolver o CAccessToken DACL predefinido do objeto.
CAccessToken::GetEffectiveToken Chame este método para obter o CAccessToken objeto igual ao token de acesso em vigor para o thread atual.
CAccessToken::GetGroups Chame este método para devolver os CAccessToken grupos de tokens do objeto.
CAccessToken::GetHandle Chame este método para recuperar um handle para o token de acesso.
CAccessToken::GetImpersonationLevel Chame este método para obter o nível de personificação do token de acesso.
CAccessToken::GetLogonSessionId Chame este método para obter o ID da Sessão de Início de Sessão associado ao CAccessToken objeto.
CAccessToken::GetLogonSid Chame este método para obter o SID de login associado ao CAccessToken objeto.
CAccessToken::GetOwner Chame este método para associar o proprietário ao CAccessToken objeto.
CAccessToken::GetPrimaryGroup Chame este método para obter o grupo primário associado ao CAccessToken objeto.
CAccessToken::GetPrivileges Chame este método para obter os privilégios associados ao CAccessToken objeto.
CAccessToken::GetProcessToken Chame este método para inicializar o CAccessToken com o token de acesso do processo dado.
CAccessToken::GetProfile Chame este método para obter o handle a apontar para o perfil de utilizador associado ao CAccessToken objeto.
CAccessToken::GetSource Chame este método para obter a origem do CAccessToken objeto.
CAccessToken::GetStatistics Chame este método para obter informação associada ao CAccessToken objeto.
CAccessToken::GetTerminalServicesSessionId Chame este método para obter o ID da Sessão de Serviços Terminais associado ao CAccessToken objeto.
CAccessToken::GetThreadToken Chame este método para inicializar o CAccessToken com o token do thread dado.
CAccessToken::GetTokenId Chame este método para obter o ID de Token associado ao CAccessToken objeto.
CAccessToken::GetType Chame este método para obter o tipo de token do CAccessToken objeto.
CAccessToken::GetUser Chame este método para identificar o utilizador associado ao CAccessToken objeto.
CAccessToken::HKeyCurrentUser Chame este método para obter o handle a apontar para o perfil de utilizador associado ao CAccessToken objeto.
CAccessToken::Imitar Chame este método para atribuir uma personificação CAccessToken a um thread.
CAccessToken::ImpersonateLlogedOnUser Chame este método para permitir que a thread que chama se faça passar pelo contexto de segurança de um utilizador iniciado em sessão.
CAccessToken::IsTokenRestricted Chame este método para testar se o CAccessToken objeto contém uma lista de SIDs restritos.
CAccessToken::LoadUserProfile Chame este método para carregar o perfil de utilizador associado ao CAccessToken objeto.
CAccessToken::LogonUser Chame este método para criar uma sessão de login para o utilizador associado às credenciais fornecidas.
CAccessToken::OpenCOMClientToken Chame este método a partir de um servidor COM que gere uma chamada de um cliente para inicializar o CAccessToken com o token de acesso do cliente COM.
CAccessToken::OpenNamedPipeClientToken Chamar este método a partir de dentro de um servidor, recebendo pedidos através de um pipeline nomeado para inicializar o CAccessToken com o token de acesso do cliente.
CAccessToken::OpenRPCClientToken Chame este método dentro de um servidor que gere uma chamada de um cliente RPC para inicializar o CAccessToken com o token de acesso do cliente.
CAccessToken::OpenThreadToken Chame este método para definir o nível de personificação e depois inicialize o CAccessToken com o token do thread dado.
CAccessToken::P rivilegeCheck Chame este método para determinar se um conjunto específico de privilégios está ativado no CAccessToken objeto.
CAccessToken::Revert Chame este método para parar um thread que está a usar um token de personificação.
CAccessToken::SetDefaultDacl Chame este método para definir o DACL padrão do CAccessToken objeto.
CAccessToken::SetOwner Chame este método para definir o proprietário do CAccessToken objeto.
CAccessToken::SetPrimaryGroup Chame este método para definir o grupo primário do CAccessToken objeto.

Observações

Um token de acesso é um objeto que descreve o contexto de segurança de um processo ou thread e é alocado a cada utilizador iniciado num sistema Windows.

Para uma introdução ao modelo de controlo de acesso no Windows, veja Controlo de Acesso no SDK do Windows.

Requerimentos

Cabeçalho: atlsecurity.h

CAccessToken::Anexar

Chame este método para assumir a propriedade do handle dado do token de acesso.

void Attach(HANDLE hToken) throw();

Parâmetros

hToken
Um handle para o token de acesso.

Observações

Em builds de depuração, ocorrerá um erro de asserção se o CAccessToken objeto já tiver a posse de um token de acesso.

CAccessToken::~CAccessToken

O destruidor.

virtual ~CAccessToken() throw();

Observações

Liberta todos os recursos alocados.

CAccessToken::CheckTokenMembership

Chame este método para determinar se um SID especificado está ativado no CAccessToken objeto.

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

Parâmetros

rSid
Referência a um objeto CSid Class .

pbIsMember
Aponta para uma variável que recebe os resultados da verificação.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O CheckTokenMembership método verifica a presença do SID no utilizador e nos SIDs do grupo do token de acesso. Se o SID estiver presente e tiver o atributo SE_GROUP_ENABLED, pbIsMember é definido como TRUE; caso contrário, fica definido como FALSE.

Em compilações de depuração, ocorrerá um erro de asserção se o pbIsMember não for um ponteiro válido.

Observação

O CAccessToken objeto deve ser um token de personificação e não um token primário.

CAccessToken::CreateImpersonationToken

Chame este método para criar um token de acesso de personificação.

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

Parâmetros

pImp
Apontar para o novo CAccessToken objeto.

cunhada
Especifica um SECURITY_IMPERSONATION_LEVEL tipo enumerado que fornece o nível de personificação do novo token.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

CreateImpersonationToken chama o DuplicateToken para criar um novo token de personificação.

CAccessToken::CreatePrimaryToken

Chame este método para criar um novo token primário.

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

Parâmetros

pPri
Apontar para o novo CAccessToken objeto.

dwDesiredAccess
Especifica os direitos de acesso solicitados para o novo token. O padrão, MAXIMUM_ALLOWED, solicita todos os direitos de acesso válidos para o chamador. Consulte Direitos de Acesso e Máscaras de Acesso para mais informações sobre direitos de acesso.

pTokenAttributes
Apontador para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para o novo token e determina se os processos filhos podem herdar o token. Se pTokenAttributes for NULL, o token recebe um descritor de segurança por defeito e o handle não pode ser herdado.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

CreatePrimaryToken chama o DuplicateTokenEx para criar um novo token primário.

CAccessToken::CreateProcessAsUser

Chame este método para criar um novo processo a correr no contexto de segurança do utilizador representado pelo CAccessToken objeto.

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();

Parâmetros

pApplicationName
Apontador para uma cadeia terminada por nulo que especifica o módulo a executar. Este parâmetro pode não ser NULL.

pCommandLine
Apontador para uma cadeia terminada por null que especifica a linha de comandos a executar.

pProcessInformation
Aponta para uma estrutura PROCESS_INFORMATION que recebe informações de identificação sobre o novo processo.

pStartupInfo
Apontar para uma estrutura STARTUPINFO que especifica como deve aparecer a janela principal do novo processo.

dwCreamFlags
Especifica flags adicionais que controlam a classe de prioridade e a criação do processo. Consulte a função Win32 CreateProcessAsUser para uma lista de flags.

bLoadProfile
Se TRUE, o perfil do utilizador é carregado com LoadUserProfile.

pProcessAttributes
Apontador para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para o novo processo e determina se os processos filhos podem herdar o handle devolvido. Se pProcessAttributes for NULL, o processo recebe um descritor de segurança por defeito e o handle não pode ser herdado.

pThreadAttributes
Apontador para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para a nova thread e determina se os processos filhos podem herdar o handle devolvido. Se pThreadAttributes for NULL, o thread recebe um descritor de segurança por defeito e o handle não pode ser herdado.

bInherit
Indica se o novo processo herda alavancas do processo que chama. Se for TRUE, cada handle aberto herdeiro no processo que chama é herdado pelo novo processo. Os handles herdados têm o mesmo valor e privilégios de acesso que os handles originais.

pCurrentDirectory
Apontador para uma cadeia terminada por null que especifica o disco e diretório atuais para o novo processo. A cadeia deve ser um caminho completo que inclua uma letra de unidade. Se este parâmetro for NULL, o novo processo terá a mesma unidade e diretório atuais que o processo que chama.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

CreateProcessAsUser utiliza a CreateProcessAsUser função Win32 para criar um novo processo que corre no contexto de segurança do utilizador representado pelo CAccessToken objeto. Consulte a descrição da função CreateProcessAsUser para uma discussão completa dos parâmetros necessários.

Para que este método tenha sucesso, o CAccessToken objeto deve deter os privilégios AssignPrimaryToken (a menos que seja um token restrito) e IncreaseQuota.

CAccessToken::CreateRestrictedToken

Chame este método para criar um novo objeto restrito CAccessToken .

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

Parâmetros

pRestrictedToken
O novo objeto restrito CAccessToken .

SidsToDisable
Um CTokenGroups objeto que especifica os SIDs apenas de negação.

SidsToRestrict
Um CTokenGroups objeto que especifica os SIDs restritivos.

PrivilegesToDelete
Um CTokenPrivileges objeto que especifica os privilégios a eliminar no token restrito. O padrão cria um objeto vazio.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

CreateRestrictedToken usa a função Win32 CreateRestrictedToken para criar um novo CAccessToken objeto, com restrições.

Importante

Ao usar CreateRestrictedToken, certifique-se do seguinte: o token existente é válido (e não inserido pelo utilizador) e SidsToDisable e PrivilegesToDelete são ambos válidos (e não inseridos pelo utilizador). Se o método devolver FALSE, negue funcionalidade.

CAccessToken::D etach

Chame este método para revogar a propriedade do token de acesso.

HANDLE Detach() throw();

Valor de retorno

Volta a pega ao CAccessToken que foi desprendido.

Observações

Este método revoga a CAccessTokenpropriedade do token de acesso.

CAccessToken::D isablePrivilege

Chame este método para desativar um privilégio no CAccessToken objeto.

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

Parâmetros

pszPrivilege
Apontador para uma string contendo o privilégio para desativar no CAccessToken objeto.

PEstado Anterior
Apontar para um CTokenPrivileges objeto que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::D isablePrivileges

Chame este método para desativar um ou mais privilégios no CAccessToken objeto.

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

Parâmetros

rPrivilégios
Apontador para um array de strings contendo os privilégios a desativar no CAccessToken objeto.

PEstado Anterior
Apontar para um CTokenPrivileges objeto que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::EnablePrivilege

Chame este método para ativar um privilégio no CAccessToken objeto.

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

Parâmetros

pszPrivilege
Apontador para uma string contendo o privilégio de ativar no CAccessToken objeto.

PEstado Anterior
Apontar para um CTokenPrivileges objeto que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::EnablePrivileges

Chame este método para ativar um ou mais privilégios no CAccessToken objeto.

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

Parâmetros

rPrivilégios
Apontador para um array de strings contendo os privilégios a ativar no CAccessToken objeto.

PEstado Anterior
Apontar para um CTokenPrivileges objeto que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetDefaultDacl

Chame este método para devolver o CAccessToken DACL predefinido do objeto.

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

Parâmetros

pDacl
Apontador para o objeto de classe CDacl que receberá o CAccessToken DACL padrão do objeto.

Valor de retorno

Retorna TRUE se o DACL padrão tiver sido recuperado, FALSE caso contrário.

CAccessToken::GetEffectiveToken

Chame este método para obter o CAccessToken objeto igual ao token de acesso em vigor para o thread atual.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetGroups

Chame este método para devolver os CAccessToken grupos de tokens do objeto.

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

Parâmetros

pGrupos
Apontar para o objeto de classe CTokenGroups , que irá receber a informação do grupo.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetHandle

Chame este método para recuperar um handle para o token de acesso.

HANDLE GetHandle() const throw();

Valor de retorno

Devolve um handle ao CAccessToken token de acesso do objeto.

CAccessToken::GetImpersonationLevel

Chame este método para obter o nível de personificação do token de acesso.

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

Parâmetros

pImpersonationLevel
Aponta para um tipo de enumeração SECURITY_IMPERSONATION_LEVEL que receberá a informação ao nível de personificação.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetLogonSessionId

Chame este método para obter o ID da Sessão de Início de Sessão associado ao CAccessToken objeto.

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

Parâmetros

Pluid
Aponta para um LUID que receberá o ID da Sessão de Logon.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Em builds de depuração, ocorrerá um erro de asserção se o pluid for um valor inválido.

CAccessToken::GetLogonSid

Chame este método para obter o SID de login associado ao CAccessToken objeto.

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

Parâmetros

pSid
Apontador para um objeto CSid Class .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Em compilações de depuração, ocorrerá um erro de asserção se pSid for um valor inválido.

CAccessToken::GetOwner

Chame este método para associar o proprietário ao CAccessToken objeto.

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

Parâmetros

pSid
Apontador para um objeto CSid Class .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O proprietário é definido por defeito em quaisquer objetos criados enquanto este token de acesso estiver em vigor.

CAccessToken::GetPrimaryGroup

Chame este método para obter o grupo primário associado ao CAccessToken objeto.

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

Parâmetros

pSid
Apontador para um objeto CSid Class .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O grupo é definido por defeito em quaisquer objetos criados enquanto este token de acesso estiver em vigor.

CAccessToken::GetPrivileges

Chame este método para obter os privilégios associados ao CAccessToken objeto.

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

Parâmetros

pPrivilégios
Apontar para um objeto CTokenPrivileges Class que irá receber os privilégios.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetProcessToken

Chame este método para inicializar o CAccessToken com o token de acesso do processo dado.

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

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

hProcesso
Handle para o processo cujo token de acesso é aberto. Se for usado o valor padrão de NULL, é utilizado o processo atual.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Chama a função Win32 OpenProcessToken .

CAccessToken::GetProfile

Chame este método para obter o handle a apontar para o perfil de utilizador associado ao CAccessToken objeto.

HANDLE GetProfile() const throw();

Valor de retorno

Devolve um handle que aponta para o perfil do utilizador, ou NULL se não existir perfil.

CAccessToken::GetSource

Chame este método para obter a origem do CAccessToken objeto.

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

Parâmetros

pSource
Aponta para uma estrutura TOKEN_SOURCE .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetStatistics

Chame este método para obter informação associada ao CAccessToken objeto.

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

Parâmetros

pEstatísticas
Aponta para uma estrutura TOKEN_STATISTICS .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetTerminalServicesSessionId

Chame este método para obter o ID da Sessão de Serviços Terminais associado ao CAccessToken objeto.

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

Parâmetros

pdwSessionId
O ID da Sessão dos Serviços Terminais.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetThreadToken

Chame este método para inicializar o CAccessToken com o token do thread dado.

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

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

hThread
Handle para o thread cujo token de acesso é aberto.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita contra o contexto de segurança do thread que chama o GetThreadToken método ou contra o contexto de segurança do processo para o thread que chama.

Se este parâmetro for FALSO, a verificação de acesso é realizada usando o contexto de segurança do thread que chama. Se o thread estiver a fazer-se passar por cliente, este contexto de segurança pode ser o de um processo cliente. Se este parâmetro for TRUE, a verificação de acesso é feita usando o contexto de segurança do processo para o thread que chama.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetTokenId

Chame este método para obter o ID de Token associado ao CAccessToken objeto.

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

Parâmetros

Pluid
Aponta para um LUID que receberá o ID do Token.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::GetType

Chame este método para obter o tipo de token do CAccessToken objeto.

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

Parâmetros

pType
Endereço da variável TOKEN_TYPE que, em caso de sucesso, recebe o tipo do token.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O tipo de enumeração TOKEN_TYPE contém valores que diferenciam entre um token primário e um token de personificação.

CAccessToken::GetUser

Chame este método para identificar o utilizador associado ao CAccessToken objeto.

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

Parâmetros

pSid
Apontador para um objeto CSid Class .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

CAccessToken::HKeyCurrentUser

Chame este método para obter o handle a apontar para o perfil de utilizador associado ao CAccessToken objeto.

HKEY HKeyCurrentUser() const throw();

Valor de retorno

Devolve um handle que aponta para o perfil do utilizador, ou NULL se não existir perfil.

CAccessToken::Imitar

Chame este método para atribuir uma personificação CAccessToken a um thread.

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

Parâmetros

hThread
Handle para o thread a atribuir o token de personificação. Esta alavanca deve ter sido aberta com TOKEN_IMPERSONATE direitos de acesso. Se hThread for NULL, o método faz com que o thread pare de usar um token de personificação.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Em builds de depuração, ocorrerá um erro de asserção se CAccessToken não tiver um ponteiro válido para um token.

A classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso imitados.

CAccessToken::ImpersonateLlogedOnUser

Chame este método para permitir que a thread que chama se faça passar pelo contexto de segurança de um utilizador iniciado em sessão.

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

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Importante

Se uma chamada a uma função de personificação falhar por qualquer motivo, o cliente não é usurpado e o pedido do cliente é feito no contexto de segurança do processo a partir do qual a chamada foi feita. Se o processo estiver a correr como uma conta altamente privilegiada, ou como membro de um grupo administrativo, o utilizador poderá ser capaz de realizar ações que, de outra forma, não seriam permitidas. Portanto, o valor de retorno desta função deve sempre ser confirmado.

CAccessToken::IsTokenRestricted

Chame este método para testar se o CAccessToken objeto contém uma lista de SIDs restritos.

bool IsTokenRestricted() const throw();

Valor de retorno

Retorna TRUE se o objeto contiver uma lista de SIDs restritivas, FALSE se não existirem SIDs restritivas ou se o método falhar.

CAccessToken::LoadUserProfile

Chame este método para carregar o perfil de utilizador associado ao CAccessToken objeto.

bool LoadUserProfile() throw(...);

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Em compilações de depuração, ocorrerá um erro de asserção se não CAccessToken contiver um token válido, ou se já existir um perfil de utilizador.

CAccessToken::LogonUser

Chame este método para criar uma sessão de login para o utilizador associado às credenciais fornecidas.

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

Parâmetros

pszUserName
Apontador para uma cadeia terminada por nulo que especifica o nome de utilizador. Este é o nome da conta de utilizador para iniciar sessão.

pszDomain
Apontador para uma cadeia terminada por null que especifica o nome do domínio ou servidor cuja base de dados de contas contém a conta pszUserName .

pszPassword
Apontador para uma cadeia terminada por null que especifica a palavra-passe em texto claro para a conta de utilizador especificada por pszUserName.

dwLogonType
Especifica o tipo de operação de login a realizar. Consulte o LogonUser para mais detalhes.

dwLogonProvider
Especifica o fornecedor de logon. Consulte o LogonUser para mais detalhes.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O token de acesso resultante do login será associado ao CAccessToken. Para que este método tenha sucesso, o CAccessToken objeto deve deter SE_TCB_NAME privilégios, identificando o detentor como parte da base informática de confiança. Consulte o LogonUser para mais informações sobre os privilégios exigidos.

CAccessToken::OpenCOMClientToken

Chame este método a partir de um servidor COM que gere uma chamada de um cliente para inicializar o CAccessToken com o token de acesso do cliente COM.

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

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

BImpersonar
Se for TRUE, o thread atual irá fazer-se passar pelo cliente COM que chama se esta chamada for concluída com sucesso. Se for FALSE, o token de acesso será aberto, mas o thread não terá token de personificação quando esta chamada terminar.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita contra o contexto de segurança do thread que chama o método GetThreadToken ou contra o contexto de segurança do processo para o thread que chama.

Se este parâmetro for FALSO, a verificação de acesso é realizada usando o contexto de segurança do thread que chama. Se o thread estiver a fazer-se passar por cliente, este contexto de segurança pode ser o de um processo cliente. Se este parâmetro for TRUE, a verificação de acesso é feita usando o contexto de segurança do processo para o thread que chama.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso imitados criados ao definir a flag bImpersonate para TRUE.

CAccessToken::OpenNamedPipeClientToken

Chamar este método a partir de dentro de um servidor, recebendo pedidos através de um pipeline nomeado para inicializar o CAccessToken com o token de acesso do cliente.

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

Parâmetros

hPipe
Pega a um cano com nome.

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

BImpersonar
Se for TRUE, o thread atual irá fazer-se passar pelo cliente pipe que chama se esta chamada for concluída com sucesso. Se for FALSE, o token de acesso será aberto, mas o thread não terá token de personificação quando esta chamada terminar.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita contra o contexto de segurança do thread que chama o método GetThreadToken ou contra o contexto de segurança do processo para o thread que chama.

Se este parâmetro for FALSO, a verificação de acesso é realizada usando o contexto de segurança do thread que chama. Se o thread estiver a fazer-se passar por cliente, este contexto de segurança pode ser o de um processo cliente. Se este parâmetro for TRUE, a verificação de acesso é feita usando o contexto de segurança do processo para o thread que chama.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso imitados criados ao definir a flag bImpersonate para TRUE.

CAccessToken::OpenRPCClientToken

Chame este método dentro de um servidor que gere uma chamada de um cliente RPC para inicializar o CAccessToken com o token de acesso do cliente.

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

Parâmetros

BindingHandle
Handle de ligação no servidor que representa uma ligação a um cliente.

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

BImpersonar
Se for TRUE, o thread atual irá fazer-se passar pelo cliente RPC que chama se esta chamada for concluída com sucesso. Se for FALSE, o token de acesso será aberto, mas o thread não terá token de personificação quando esta chamada terminar.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita contra o contexto de segurança do thread que chama o método GetThreadToken ou contra o contexto de segurança do processo para o thread que chama.

Se este parâmetro for FALSO, a verificação de acesso é realizada usando o contexto de segurança do thread que chama. Se o thread estiver a fazer-se passar por cliente, este contexto de segurança pode ser o de um processo cliente. Se este parâmetro for TRUE, a verificação de acesso é feita usando o contexto de segurança do processo para o thread que chama.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso imitados criados ao definir a flag bImpersonate para TRUE.

CAccessToken::OpenThreadToken

Chame este método para definir o nível de personificação e depois inicialize o CAccessToken com o token do thread dado.

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

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que especifica os tipos de acesso solicitados ao token de acesso. Estes tipos de acesso solicitados são comparados com o DACL do token para determinar quais os acessos concedidos ou negados.

BImpersonar
Se for TRUE, o thread ficará no nível de personificação solicitado após a conclusão deste método. Se for FALSO, o tópico reverterá ao seu nível original de imitação.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita contra o contexto de segurança do thread que chama o método GetThreadToken ou contra o contexto de segurança do processo para o thread que chama.

Se este parâmetro for FALSO, a verificação de acesso é realizada usando o contexto de segurança do thread que chama. Se o thread estiver a fazer-se passar por cliente, este contexto de segurança pode ser o de um processo cliente. Se este parâmetro for TRUE, a verificação de acesso é feita usando o contexto de segurança do processo para o thread que chama.

cunhada
Especifica um tipo SECURITY_IMPERSONATION_LEVEL enumerado que fornece o nível de personificação do token.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

OpenThreadToken é semelhante ao CAccessToken::GetThreadToken, mas define o nível de personificação antes de inicializar o CAccessToken token de acesso do thread.

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso imitados criados ao definir a flag bImpersonate para TRUE.

CAccessToken::P rivilegeCheck

Chame este método para determinar se um conjunto específico de privilégios está ativado no CAccessToken objeto.

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

Parâmetros

PrivilégiosObrigatórios
Aponta para uma estrutura PRIVILEGE_SET .

pbResult
Apontador para um valor que o método define para indicar se algum ou todos os privilégios especificados estão ativados no CAccessToken objeto.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Quando PrivilegeCheck retorna, o Attributes membro de cada estrutura de LUID_AND_ATTRIBUTES é definido para SE_PRIVILEGE_USED_FOR_ACCESS se o privilégio correspondente estiver ativado. Este método chama a função PrivilegeCheck Win32.

CAccessToken::Revert

Chame este método para impedir que um thread use um token de personificação.

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

Parâmetros

hThread
Handle para o tópico para reverter da personificação. Se hThread for NULL, assume-se o thread atual.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

A reversão dos tokens de personificação pode ser realizada automaticamente com a Classe CAutoRevertImpersonation.

CAccessToken::SetDefaultDacl

Chame este método para definir o DACL padrão do CAccessToken objeto.

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

Parâmetros

rDacl
A nova informação padrão da Classe CDacl .

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O DACL padrão é o DACL que é usado por defeito quando novos objetos são criados com este token de acesso em vigor.

CAccessToken::SetOwner

Chame este método para definir o proprietário do CAccessToken objeto.

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

Parâmetros

rSid
O objeto CSid Class contém a informação do proprietário.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O proprietário é o proprietário padrão utilizado para novos objetos criados enquanto este token de acesso está em vigor.

CAccessToken::SetPrimaryGroup

Chame este método para definir o grupo primário do CAccessToken objeto.

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

Parâmetros

rSid
O objeto CSid Class contém a informação primária do grupo.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

O grupo primário é o grupo padrão para novos objetos criados enquanto este token de acesso está em vigor.

Consulte também

Exemplo de ATLSecurity
Tokens de acesso
Visão geral da classe