Класс CTokenPrivileges

Этот класс представляет собой оболочку для TOKEN_PRIVILEGES структуры.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CTokenPrivileges

Участники

Открытые конструкторы

Имя Описание
CTokenPrivileges::CTokenPrivileges Конструктор.
CTokenPrivileges::~CTokenPrivileges Деструктор

Открытые методы

Имя Описание
CTokenPrivileges::Add Добавляет в объект один или несколько привилегий CTokenPrivileges .
CTokenPrivileges::D elete Удаляет привилегии CTokenPrivileges из объекта.
CTokenPrivileges::D eleteAll Удаляет все привилегии из CTokenPrivileges объекта.
CTokenPrivileges::GetCount Возвращает количество записей привилегий в объекте CTokenPrivileges .
CTokenPrivileges::GetDisplayNames Извлекает отображаемые имена привилегий, содержащихся в объекте CTokenPrivileges .
CTokenPrivileges::GetLength Возвращает размер буфера в байтах, необходимый для хранения TOKEN_PRIVILEGES структуры, представленной CTokenPrivileges объектом.
CTokenPrivileges::GetLuidsAndAttributes Извлекает локальные уникальные идентификаторы (LUID) и флаги атрибутов из CTokenPrivileges объекта.
CTokenPrivileges::GetNamesAndAttributes Извлекает имена привилегий и флаги атрибутов из CTokenPrivileges объекта.
CTokenPrivileges::GetPTOKEN_PRIVILEGES Возвращает указатель на структуру TOKEN_PRIVILEGES .
CTokenPrivileges::LookupPrivilege Извлекает атрибут, связанный с заданным именем привилегий.

Открытые операторы

Имя Описание
CTokenPrivileges::operator const TOKEN_PRIVILEGES * Приведение значения к указателю на структуру TOKEN_PRIVILEGES .
CTokenPrivileges::operator = Оператор присвоения.

Замечания

Маркер доступа — это объект, описывающий контекст безопасности процесса или потока и выделенный каждому пользователю, вошедшему в систему Windows.

Маркер доступа используется для описания различных привилегий безопасности, предоставленных каждому пользователю. Привилегия состоит из 64-разрядного номера, называемого локально уникальным идентификатором ( LUID) и строкой дескриптора.

Класс CTokenPrivileges представляет собой оболочку для структуры TOKEN_PRIVILEGES и содержит 0 или более привилегий. Привилегии можно добавлять, удалять или запрашивать с помощью предоставленных методов класса.

Общие сведения о модели управления доступом в Windows см. в контроль доступа в пакете SDK для Windows.

Требования

Заголовок: atlsecurity.h

CTokenPrivileges::Add

Добавляет один или несколько привилегий в объект маркера CTokenPrivileges доступа.

bool Add(LPCTSTR pszPrivilege, bool bEnable) throw(...);
void Add(const TOKEN_PRIVILEGES& rPrivileges) throw(...);

Параметры

pszPrivilege
Указатель на строку, завершающую значение NULL, которая указывает имя привилегии, как определено в WINNT. Файл заголовка H.

bEnable
Если задано значение true, привилегия включена. Если значение false, привилегия отключена.

rPrivileges
Ссылка на структуру TOKEN_PRIVILEGES . Привилегии и атрибуты копируются из этой структуры и добавляются в CTokenPrivileges объект.

Возвращаемое значение

Первая форма этого метода возвращает значение true, если привилегии успешно добавлены, значение false в противном случае.

CTokenPrivileges::CTokenPrivileges

Конструктор.

CTokenPrivileges() throw();
CTokenPrivileges(const CTokenPrivileges& rhs) throw(... );
CTokenPrivileges(const TOKEN_PRIVILEGES& rPrivileges) throw(...);

Параметры

rhs
Объект CTokenPrivileges , назначаемый новому объекту.

rPrivileges
Структура TOKEN_PRIVILEGES , назначаемая новому CTokenPrivileges объекту.

Замечания

Объект CTokenPrivileges можно создать при необходимости с помощью TOKEN_PRIVILEGES структуры или ранее определенного CTokenPrivileges объекта.

CTokenPrivileges::~CTokenPrivileges

Деструктор

virtual ~CTokenPrivileges() throw();

Замечания

Деструктор освобождает все выделенные ресурсы.

CTokenPrivileges::D elete

Удаляет привилегии из объекта маркера CTokenPrivileges доступа.

bool Delete(LPCTSTR pszPrivilege) throw();

Параметры

pszPrivilege
Указатель на строку, завершающую значение NULL, которая указывает имя привилегии, как определено в WINNT. Файл заголовка H. Например, этот параметр может указать константу SE_SECURITY_NAME или соответствующую строку SeSecurityPrivilege.

Возвращаемое значение

Возвращает значение true, если привилегия была успешно удалена, значение false в противном случае.

Замечания

Этот метод полезен в качестве средства для создания ограниченных маркеров.

CTokenPrivileges::D eleteAll

Удаляет все привилегии из объекта маркера CTokenPrivileges доступа.

void DeleteAll() throw();

Замечания

Удаляет все привилегии, содержащиеся в объекте маркера CTokenPrivileges доступа.

CTokenPrivileges::GetDisplayNames

Извлекает отображаемые имена привилегий, содержащихся в объекте CTokenPrivileges маркера доступа.

void GetDisplayNames(CNames* pDisplayNames) const throw(...);

Параметры

pDisplayNames
Указатель на массив объектов CString. CNames определяется как типdef: CTokenPrivileges::CAtlArray<CString>.

Замечания

Параметр pDisplayNames — это указатель на массив CString объектов, который получит отображаемые имена, соответствующие привилегиям, содержащимся в объекте CTokenPrivileges . Этот метод извлекает отображаемые имена только для привилегий, указанных в разделе "Определенные привилегии" WINNT.H.

Этот метод получает отображаемое имя: например, если имя атрибута SE_REMOTE_SHUTDOWN_NAME, отображаемое имя — "Принудительное завершение работы из удаленной системы". Чтобы получить имя системы, используйте CTokenPrivileges::GetNamesAndAttributes.

CTokenPrivileges::GetCount

Возвращает количество записей привилегий в объекте CTokenPrivileges .

UINT GetCount() const throw();

Возвращаемое значение

Возвращает количество привилегий, содержащихся в объекте CTokenPrivileges .

CTokenPrivileges::GetLength

Возвращает длину CTokenPrivileges объекта.

UINT GetLength() const throw();

Возвращаемое значение

Возвращает количество байтов, необходимых для хранения TOKEN_PRIVILEGES структуры, представленной CTokenPrivileges объектом, включая все записи привилегий, которые он содержит.

CTokenPrivileges::GetLuidsAndAttributes

Извлекает локальные уникальные идентификаторы (LUID) и флаги атрибутов из CTokenPrivileges объекта.

void GetLuidsAndAttributes(
    CLUIDArray* pPrivileges,
    CAttributes* pAttributes = NULL) const throw(...);

Параметры

pPrivileges
Указатель на массив объектов LUID . CLUIDArray — типdef, определенный как CAtlArray<LUID> CLUIDArray.

pAttributes
Указатель на массив объектов DWORD. Если этот параметр опущен или null, атрибуты не извлекаются. CAttributes — типdef, определенный как CAtlArray <DWORD> CAttributes.

Замечания

Этот метод перечисляет все привилегии, содержащиеся в объекте CTokenPrivileges маркера доступа, и помещает отдельные идентификаторы LUID и (необязательно) флаги атрибутов в объекты массива.

CTokenPrivileges::GetNamesAndAttributes

Извлекает флаги имени и атрибута из CTokenPrivileges объекта.

void GetNamesAndAttributes(
    CNames* pNames,
    CAttributes* pAttributes = NULL) const throw(...);

Параметры

pNames
Указатель на массив CString объектов. CNames — типdef, определенный как CAtlArray <CString> CNames.

pAttributes
Указатель на массив объектов DWORD. Если этот параметр опущен или null, атрибуты не извлекаются. CAttributes — типdef, определенный как CAtlArray <DWORD> CAttributes.

Замечания

Этот метод перечисляет все привилегии, содержащиеся в объекте CTokenPrivileges , помещая имя и (необязательно) флаги атрибутов в объекты массива.

Этот метод извлекает имя атрибута, а не отображаемое имя: например, если имя атрибута SE_REMOTE_SHUTDOWN_NAME, системное имя — SeRemoteShutdownPrivilege. Чтобы получить отображаемое имя, используйте метод CTokenPrivileges::GetDisplayNames.

CTokenPrivileges::GetPTOKEN_PRIVILEGES

Возвращает указатель на структуру TOKEN_PRIVILEGES .

const TOKEN_PRIVILEGES* GetPTOKEN_PRIVILEGES() const throw(...);

Возвращаемое значение

Возвращает указатель на структуру TOKEN_PRIVILEGES .

CTokenPrivileges::LookupPrivilege

Извлекает атрибут, связанный с заданным именем привилегий.

bool LookupPrivilege(
    LPCTSTR pszPrivilege,
    DWORD* pdwAttributes = NULL) const throw(...);

Параметры

pszPrivilege
Указатель на строку, завершающую значение NULL, которая указывает имя привилегии, как определено в WINNT. Файл заголовка H. Например, этот параметр может указать константу SE_SECURITY_NAME или соответствующую строку SeSecurityPrivilege.

pdwAttributes
Указатель на переменную, которая получает атрибуты.

Возвращаемое значение

Возвращает значение true, если атрибут успешно получен, значение false в противном случае.

CTokenPrivileges::operator =

Оператор присвоения.

CTokenPrivileges& operator= (const TOKEN_PRIVILEGES& rPrivileges) throw(...);
CTokenPrivileges& operator= (const CTokenPrivileges& rhs) throw(...);

Параметры

rPrivileges
Структура TOKEN_PRIVILEGES , назначаемая объекту CTokenPrivileges .

rhs
Объект CTokenPrivileges , назначаемый объекту.

Возвращаемое значение

Возвращает обновленный CTokenPrivileges объект.

CTokenPrivileges::operator const TOKEN_PRIVILEGES *

Приведение значения к указателю на структуру TOKEN_PRIVILEGES .

operator const TOKEN_PRIVILEGES *() const throw(...);

Замечания

Приведение значения к указателю на структуру TOKEN_PRIVILEGES .

См. также

Пример безопасности
TOKEN_PRIVILEGES
LUID
LUID_AND_ATTRIBUTES
Общие сведения о классе
Глобальные функции безопасности