Classe CTokenPrivileges
Essa classe é um wrapper para a estrutura TOKEN_PRIVILEGES
.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
class CTokenPrivileges
Membros
Construtores públicos
Nome | Descrição |
---|---|
CTokenPrivileges::CTokenPrivileges | O construtor . |
CTokenPrivileges::~CTokenPrivileges | O destruidor. |
Métodos públicos
Nome | Descrição |
---|---|
CTokenPrivileges::Add | Adiciona um ou mais privilégios ao objeto CTokenPrivileges . |
CTokenPrivileges::Delete | Exclui um privilégio do objeto CTokenPrivileges . |
CTokenPrivileges::DeleteAll | Exclui todos os privilégios do objeto CTokenPrivileges . |
CTokenPrivileges::GetCount | Retorna o número de entradas de privilégio no objeto CTokenPrivileges . |
CTokenPrivileges::GetDisplayNames | Recupera nomes de exibição para os privilégios contidos no objeto CTokenPrivileges . |
CTokenPrivileges::GetLength | Retorna o tamanho do buffer em bytes necessários para manter a estrutura TOKEN_PRIVILEGES representada pelo objeto CTokenPrivileges . |
CTokenPrivileges::GetLuidsAndAttributes | Recupera os LUIDs (identificadores exclusivos locais) e os sinalizadores de atributo do objeto CTokenPrivileges . |
CTokenPrivileges::GetNamesAndAttributes | Recupera os nomes de privilégio e os sinalizadores de atributo do objeto CTokenPrivileges . |
CTokenPrivileges::GetPTOKEN_PRIVILEGES | Retorna um ponteiro para a estrutura TOKEN_PRIVILEGES . |
CTokenPrivileges::LookupPrivilege | Recupera o atributo associado a um determinado nome de privilégio. |
Operadores públicos
Nome | Descrição |
---|---|
CTokenPrivileges::operator const TOKEN_PRIVILEGES * | Converte um valor em um ponteiro para a estrutura TOKEN_PRIVILEGES . |
CTokenPrivileges::operator = | Operador de atribuição. |
Comentários
Um token de acesso é um objeto que descreve o contexto de segurança de um processo ou thread e é alocado para cada usuário conectado a um sistema Windows.
O token de acesso é usado para descrever os vários privilégios de segurança concedidos a cada usuário. Um privilégio consiste em um número de 64 bits chamado LUID (identificador exclusivo local) e uma cadeia de caracteres de descritor.
A classe CTokenPrivileges
é um wrapper para a estrutura TOKEN_PRIVILEGES e contém 0 ou mais privilégios. Os privilégios podem ser adicionados, excluídos ou consultados usando os métodos de classe fornecidos.
Para ver uma introdução ao modelo de controle de acesso no Windows, confira Controle de Acesso no SDK do Windows.
Requisitos
Cabeçalho: atlsecurity.h
CTokenPrivileges::Add
Adiciona um ou mais privilégios ao objeto do token de acesso CTokenPrivileges
.
bool Add(LPCTSTR pszPrivilege, bool bEnable) throw(...);
void Add(const TOKEN_PRIVILEGES& rPrivileges) throw(...);
Parâmetros
pszPrivilege
Ponteiro para uma cadeia de caracteres com terminação nula que especifica o nome do privilégio, conforme definido no arquivo de cabeçalho WINNT.H.
bEnable
Se for verdadeiro, o privilégio será habilitado. Se for falso, o privilégio será desabilitado.
rPrivileges
Referência a uma estrutura TOKEN_PRIVILEGES. Os privilégios e atributos são copiados dessa estrutura e adicionados ao objeto CTokenPrivileges
.
Valor de retorno
O primeiro formato desse método retornará true se os privilégios forem adicionados com êxito. Caso contrário, false.
CTokenPrivileges::CTokenPrivileges
O construtor .
CTokenPrivileges() throw();
CTokenPrivileges(const CTokenPrivileges& rhs) throw(... );
CTokenPrivileges(const TOKEN_PRIVILEGES& rPrivileges) throw(...);
Parâmetros
rhs
O objeto CTokenPrivileges
a ser atribuído ao novo objeto.
rPrivileges
A estrutura TOKEN_PRIVILEGES a ser atribuída ao novo objeto CTokenPrivileges
.
Comentários
O objeto CTokenPrivileges
pode ser criado usando uma estrutura TOKEN_PRIVILEGES
ou um objeto CTokenPrivileges
definido anteriormente.
CTokenPrivileges::~CTokenPrivileges
O destruidor.
virtual ~CTokenPrivileges() throw();
Comentários
O destruidor libera todos os recursos alocados.
CTokenPrivileges::Delete
Exclui um privilégio do objeto de token de acesso CTokenPrivileges
.
bool Delete(LPCTSTR pszPrivilege) throw();
Parâmetros
pszPrivilege
Ponteiro para uma cadeia de caracteres com terminação nula que especifica o nome do privilégio, conforme definido no arquivo de cabeçalho WINNT.H. Por exemplo, esse parâmetro pode especificar a constante SE_SECURITY_NAME ou sua cadeia de caracteres correspondente, "SeSecurityPrivilege".
Valor de retorno
Retornará true se o privilégio tiver sido excluído com êxito. Caso contrário, false.
Comentários
Esse método é útil como uma ferramenta para criar tokens restritos.
CTokenPrivileges::DeleteAll
Exclui todos os privilégios do objeto de token de acesso CTokenPrivileges
.
void DeleteAll() throw();
Comentários
Exclui todos os privilégios contidos no objeto de token de acesso CTokenPrivileges
.
CTokenPrivileges::GetDisplayNames
Recupera nomes de exibição para os privilégios contidos no objeto de token de acesso CTokenPrivileges
.
void GetDisplayNames(CNames* pDisplayNames) const throw(...);
Parâmetros
pDisplayNames
Um ponteiro para uma matriz de objetos CString
. CNames
é definido como um typedef: CTokenPrivileges::CAtlArray<CString>
.
Comentários
O parâmetro pDisplayNames
é um ponteiro para uma matriz de objetos CString
que receberá os nomes de exibição correspondentes aos privilégios contidos no objeto CTokenPrivileges
. Esse método recupera nomes de exibição somente para os privilégios especificados na seção Privilégios Definidos do WINNT.H.
Esse método recupera um nome exibível: por exemplo, se o nome do atributo for SE_REMOTE_SHUTDOWN_NAME, o nome exibível será "Forçar desligamento de um sistema remoto". Para obter o nome do sistema, use CTokenPrivileges::GetNamesAndAttributes.
CTokenPrivileges::GetCount
Retorna o número de entradas de privilégio no objeto CTokenPrivileges
.
UINT GetCount() const throw();
Valor de retorno
Retorna o número de privilégios contidos no objeto CTokenPrivileges
.
CTokenPrivileges::GetLength
Retorna o comprimento do objeto CTokenPrivileges
.
UINT GetLength() const throw();
Valor de retorno
Retorna o número de bytes necessários para manter uma estrutura TOKEN_PRIVILEGES
representada pelo objeto CTokenPrivileges
, incluindo todas as entradas de privilégio que ele contém.
CTokenPrivileges::GetLuidsAndAttributes
Recupera os LUIDs (identificadores exclusivos locais) e os sinalizadores de atributo do objeto CTokenPrivileges
.
void GetLuidsAndAttributes(
CLUIDArray* pPrivileges,
CAttributes* pAttributes = NULL) const throw(...);
Parâmetros
pPrivileges
Um ponteiro para uma matriz de objetos LUID. CLUIDArray
é um typedef definido como CAtlArray<LUID> CLUIDArray
.
pAttributes
Um ponteiro para uma matriz de objetos DWORD. Se esse parâmetro for omitido ou NULL, os atributos não serão recuperados. CAttributes
é um typedef definido como CAtlArray <DWORD> CAttributes
.
Comentários
Esse método enumerará todos os privilégios contidos no objeto de token de acesso CTokenPrivileges
e colocará os LUIDs individuais e (opcionalmente) os sinalizadores de atributo em objetos de matriz.
CTokenPrivileges::GetNamesAndAttributes
Recupera o nome e os sinalizadores de atributo do objeto CTokenPrivileges
.
void GetNamesAndAttributes(
CNames* pNames,
CAttributes* pAttributes = NULL) const throw(...);
Parâmetros
pNames
Um ponteiro para uma matriz de objetos CString
. CNames
é um typedef definido como CAtlArray <CString> CNames
.
pAttributes
Um ponteiro para uma matriz de objetos DWORD. Se esse parâmetro for omitido ou NULL, os atributos não serão recuperados. CAttributes
é um typedef definido como CAtlArray <DWORD> CAttributes
.
Comentários
Esse método enumerará todos os privilégios contidos no objeto CTokenPrivileges
, colocando o nome e (opcionalmente) os sinalizadores de atributo em objetos de matriz.
Esse método recupera o nome do atributo, em vez do nome exibível: por exemplo, se o nome do atributo for SE_REMOTE_SHUTDOWN_NAME, o nome do sistema será "SeRemoteShutdownPrivilege". Para obter o nome exibível, use o método CTokenPrivileges::GetDisplayNames.
CTokenPrivileges::GetPTOKEN_PRIVILEGES
Retorna um ponteiro para a estrutura TOKEN_PRIVILEGES
.
const TOKEN_PRIVILEGES* GetPTOKEN_PRIVILEGES() const throw(...);
Valor de retorno
Retorna um ponteiro para a estrutura TOKEN_PRIVILEGES.
CTokenPrivileges::LookupPrivilege
Recupera o atributo associado a um determinado nome de privilégio.
bool LookupPrivilege(
LPCTSTR pszPrivilege,
DWORD* pdwAttributes = NULL) const throw(...);
Parâmetros
pszPrivilege
Ponteiro para uma cadeia de caracteres com terminação nula que especifica o nome do privilégio, conforme definido no arquivo de cabeçalho WINNT.H. Por exemplo, esse parâmetro pode especificar a constante SE_SECURITY_NAME ou sua cadeia de caracteres correspondente, "SeSecurityPrivilege".
pdwAttributes
Um ponteiro para uma variável que recebe os atributos.
Valor de retorno
Retornará true se o atributo for recuperado com êxito. Caso contrário, false.
CTokenPrivileges::operator =
Operador de atribuição.
CTokenPrivileges& operator= (const TOKEN_PRIVILEGES& rPrivileges) throw(...);
CTokenPrivileges& operator= (const CTokenPrivileges& rhs) throw(...);
Parâmetros
rPrivileges
A estrutura TOKEN_PRIVILEGES a ser atribuída ao objeto CTokenPrivileges
.
rhs
O objeto CTokenPrivileges
a ser atribuído ao objeto.
Valor de retorno
Retorna o objeto atualizado CTokenPrivileges
.
CTokenPrivileges::operator const TOKEN_PRIVILEGES *
Converte um valor em um ponteiro para a estrutura TOKEN_PRIVILEGES
.
operator const TOKEN_PRIVILEGES *() const throw(...);
Comentários
Converte um valor em um ponteiro para a estrutura TOKEN_PRIVILEGES.
Confira também
Exemplo de Segurança
TOKEN_PRIVILEGES
LUID
LUID_AND_ATTRIBUTES
Visão geral da aula
Funções globais de segurança