Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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