Partilhar via


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