Поделиться через


Класс CAccessToken

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

Внимание

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

Синтаксис

class CAccessToken

Участники

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

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

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

Имя Описание
CAccessToken::Attach Вызовите этот метод для владения заданным дескриптором маркера доступа.
CAccessToken::CheckTokenMembership Вызовите этот метод, чтобы определить, включен ли указанный идентификатор безопасности в объекте CAccessToken .
CAccessToken::CreateImpersonationToken Вызовите этот метод, чтобы создать новый маркер доступа олицетворения.
CAccessToken::CreatePrimaryToken Вызовите этот метод для создания нового первичного маркера.
CAccessToken::CreateProcessAsUser Вызовите этот метод, чтобы создать новый процесс, выполняемый в контексте безопасности пользователя, представленного CAccessToken объектом.
CAccessToken::CreateRestrictedToken Вызовите этот метод для создания нового CAccessToken ограниченного объекта.
CAccessToken::D etach Вызовите этот метод, чтобы отменить владение маркером доступа.
CAccessToken::D isablePrivilege Вызовите этот метод, чтобы отключить привилегии в объекте CAccessToken .
CAccessToken::D isablePrivileges Вызовите этот метод, чтобы отключить один или несколько привилегий в объекте CAccessToken .
CAccessToken::EnablePrivilege Вызовите этот метод, чтобы включить привилегии в объекте CAccessToken .
CAccessToken::EnablePrivileges Вызовите этот метод для включения одного или нескольких привилегий в объекте CAccessToken .
CAccessToken::GetDefaultDacl Вызовите этот метод, чтобы вернуть CAccessToken daCL объекта по умолчанию.
CAccessToken::GetEffectiveToken Вызовите этот метод, чтобы получить CAccessToken объект, равный маркеру доступа для текущего потока.
CAccessToken::GetGroups Вызовите этот метод, чтобы вернуть CAccessToken группы маркеров объекта.
CAccessToken::GetHandle Вызовите этот метод, чтобы получить дескриптор маркера доступа.
CAccessToken::GetImpersonationLevel Вызовите этот метод, чтобы получить уровень олицетворения из маркера доступа.
CAccessToken::GetLogonSessionId Вызовите этот метод, чтобы получить идентификатор сеанса входа, связанный CAccessToken с объектом.
CAccessToken::GetLogonSid Вызовите этот метод, чтобы получить идентификатор безопасности входа, связанный CAccessToken с объектом.
CAccessToken::GetOwner Вызовите этот метод, чтобы получить владельца, связанного CAccessToken с объектом.
CAccessToken::GetPrimaryGroup Вызовите этот метод, чтобы получить основную группу, связанную с CAccessToken объектом.
CAccessToken::GetPrivileges Вызовите этот метод, чтобы получить привилегии, связанные с CAccessToken объектом.
CAccessToken::GetProcessToken Вызовите этот метод, чтобы инициализировать CAccessToken маркер доступа из заданного процесса.
CAccessToken::GetProfile Вызовите этот метод, чтобы получить дескриптор, указывающий на профиль пользователя, связанный CAccessToken с объектом.
CAccessToken::GetSource Вызовите этот метод, чтобы получить источник CAccessToken объекта.
CAccessToken::GetStatistics Вызовите этот метод, чтобы получить сведения, связанные с CAccessToken объектом.
CAccessToken::GetTerminalServicesSessionId Вызовите этот метод, чтобы получить идентификатор сеанса служб терминалов, связанный CAccessToken с объектом.
CAccessToken::GetThreadToken Вызовите этот метод для инициализации CAccessToken маркера из данного потока.
CAccessToken::GetTokenId Вызовите этот метод, чтобы получить идентификатор маркера, связанный CAccessToken с объектом.
CAccessToken::GetType Вызовите этот метод, чтобы получить тип маркера CAccessToken объекта.
CAccessToken::GetUser Вызовите этот метод, чтобы определить пользователя, связанного CAccessToken с объектом.
CAccessToken::HKeyCurrentUser Вызовите этот метод, чтобы получить дескриптор, указывающий на профиль пользователя, связанный CAccessToken с объектом.
CAccessToken::Impersonate Вызовите этот метод, чтобы назначить олицетворение CAccessToken потоку.
CAccessToken::ImpersonateLoggedOnUser Вызовите этот метод, чтобы разрешить вызывающему потоку олицетворение контекста безопасности пользователя, вошедшего в систему.
CAccessToken::IsTokenRestricted Вызовите этот метод, чтобы проверить, содержит ли CAccessToken объект список ограниченных идентификаторов SID.
CAccessToken::LoadUserProfile Вызовите этот метод, чтобы загрузить профиль пользователя, связанный CAccessToken с объектом.
CAccessToken::LogonUser Вызовите этот метод, чтобы создать сеанс входа для пользователя, связанного с заданными учетными данными.
CAccessToken::OpenCOMClientToken Вызовите этот метод из COM-сервера, обрабатывая вызов от клиента, чтобы инициализировать CAccessToken маркер доступа из COM-клиента.
CAccessToken::OpenNamedPipeClientToken Вызовите этот метод из сервера, выполняя запросы на именованный канал, чтобы инициализировать CAccessToken маркер доступа от клиента.
CAccessToken::OpenRPCClientToken Вызовите этот метод из сервера, обрабатывающего вызов от клиента RPC, чтобы инициализировать CAccessToken маркер доступа от клиента.
CAccessToken::OpenThreadToken Вызовите этот метод, чтобы задать уровень олицетворения, а затем инициализировать CAccessToken маркер из заданного потока.
CAccessToken::P rivilegeCheck Вызовите этот метод, чтобы определить, включен ли указанный набор привилегий в объекте CAccessToken .
CAccessToken::Revert Вызовите этот метод, чтобы остановить поток, использующий токен олицетворения.
CAccessToken::SetDefaultDacl Вызовите этот метод, чтобы задать daCL по умолчанию объекта CAccessToken .
CAccessToken::SetOwner Вызовите этот метод, чтобы задать владельца CAccessToken объекта.
CAccessToken::SetPrimaryGroup Вызовите этот метод, чтобы задать основную группу CAccessToken объекта.

Замечания

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

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

Требования

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

CAccessToken::Attach

Вызовите этот метод для владения заданным дескриптором маркера доступа.

void Attach(HANDLE hToken) throw();

Параметры

hToken
Дескриптор маркера доступа.

Замечания

В отладочных сборках ошибка утверждения будет возникать, если CAccessToken объект уже имеет владение маркером доступа.

CAccessToken::~CAccessToken

Деструктор

virtual ~CAccessToken() throw();

Замечания

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

CAccessToken::CheckTokenMembership

Вызовите этот метод, чтобы определить, включен ли указанный идентификатор безопасности в объекте CAccessToken .

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

Параметры

rSid
Ссылка на объект класса CSid.

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

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

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

Замечания

Метод CheckTokenMembership проверяет наличие идентификатора безопасности в идентификаторах безопасности пользователя и группы маркера доступа. Если идентификатор безопасности присутствует и имеет атрибут SE_GROUP_ENABLED, pbIsMember имеет значение TRUE; в противном случае имеет значение FALSE.

В сборках отладки ошибка утверждения будет возникать, если pbIsMember не является допустимым указателем.

Примечание.

Объект CAccessToken должен быть маркером олицетворения, а не основным маркером.

CAccessToken::CreateImpersonationToken

Вызовите этот метод для создания маркера доступа олицетворения.

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

Параметры

сутенёр
Указатель на новый CAccessToken объект.

sil
Указывает SECURITY_IMPERSONATION_LEVEL перечислимый тип, который предоставляет уровень олицетворения нового токена.

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

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

Замечания

CreateImpersonationToken вызывает DuplicateToken для создания нового токена олицетворения.

CAccessToken::CreatePrimaryToken

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

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

Параметры

pPri
Указатель на новый CAccessToken объект.

dwDesiredAccess
Указывает запрошенные права доступа для нового маркера. По умолчанию MAXIMUM_ALLOWED запрашиваются все права доступа, допустимые для вызывающего абонента. Дополнительные сведения о правах доступа см. в статье "Права доступа" и "Маски доступа".

pTokenAttributes
Указатель на структуру SECURITY_ATTRIBUTES , которая указывает дескриптор безопасности для нового маркера и определяет, могут ли дочерние процессы наследовать маркер. Если значение pTokenAttributes равно NULL, маркер получает дескриптор безопасности по умолчанию и дескриптор не может быть унаследован.

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

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

Замечания

CreatePrimaryToken вызывает ДубликатTokenEx для создания нового первичного маркера.

CAccessToken::CreateProcessAsUser

Вызовите этот метод, чтобы создать новый процесс, выполняемый в контексте безопасности пользователя, представленного CAccessToken объектом.

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

Параметры

pApplicationName
Указатель на строку, завершающуюся значением NULL, которая указывает модуль для выполнения. Этот параметр может не иметь значение NULL.

pCommandLine
Указатель на строку, завершающуюся значением NULL, которая указывает командную строку для выполнения.

pProcessInformation
Указатель на структуру PROCESS_INFORMATION, которая получает идентификационные сведения о новом процессе.

pStartupInfo
Указатель на структуру STARTUPINFO , которая указывает, как должно отображаться главное окно для нового процесса.

dwCreationFlags
Задает дополнительные флаги, управляющие классом приоритета и созданием процесса. Список флагов см. в функции Win32 CreateProcessAsUser .

bLoadProfile
Если значение TRUE, профиль пользователя загружается с loadUserProfile.

pProcessAttributes
Указатель на структуру SECURITY_ATTRIBUTES , которая задает дескриптор безопасности для нового процесса и определяет, могут ли дочерние процессы наследовать возвращенный дескриптор. Если pProcessAttributes имеет значение NULL, процесс получает дескриптор безопасности по умолчанию и дескриптор не может быть унаследован.

pThreadAttributes
Указатель на структуру SECURITY_ATTRIBUTES , которая задает дескриптор безопасности для нового потока и определяет, могут ли дочерние процессы наследовать возвращенный дескриптор. Если pThreadAttributes имеет значение NULL, поток получает дескриптор безопасности по умолчанию и дескриптор безопасности не может быть унаследован.

bInherit
Указывает, наследует ли новый процесс дескриптор от вызывающего процесса. Если значение TRUE, каждый наследуемый открытый дескриптор в вызывающем процессе наследуется новым процессом. Унаследованные дескрипторы имеют одинаковые значения и права доступа, что и исходные дескрипторы.

pCurrentDirectory
Указатель на строку, завершающую значение NULL, которая указывает текущий диск и каталог для нового процесса. Строка должна быть полным путем, включающим букву диска. Если этот параметр имеет значение NULL, новый процесс будет иметь тот же текущий диск и каталог, что и вызывающий процесс.

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

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

Замечания

CreateProcessAsUserCreateProcessAsUser функция Win32 используется для создания нового процесса, который выполняется в контексте безопасности пользователя, представленного CAccessToken объектом. См. описание функции CreateProcessAsUser для полного обсуждения необходимых параметров.

Для успешного выполнения CAccessToken этого метода объект должен содержать НазначениеPrimaryToken (если он не является ограниченным маркером) и привилегиями IncreaseQuota.

CAccessToken::CreateRestrictedToken

Вызовите этот метод для создания нового CAccessToken ограниченного объекта.

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

Параметры

pRestrictedToken
Новый, ограниченный CAccessToken объект.

SidsToDisable
Объект CTokenGroups , указывающий идентификаторы, доступные только для запрета.

SidsToRestrict
Объект CTokenGroups , указывающий ограничивающие идентификаторы SID.

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

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

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

Замечания

CreateRestrictedTokenиспользует функцию CreateRestrictedToken Win32 для создания нового CAccessToken объекта с ограничениями.

Внимание

При использовании CreateRestrictedTokenубедитесь, что существующий токен действителен (и не введен пользователем) и SidsToDisable и PrivilegesToDelete допустимы (и не введен пользователем). Если метод возвращает значение FALSE, отклоните функциональные возможности.

CAccessToken::D etach

Вызовите этот метод, чтобы отменить владение маркером доступа.

HANDLE Detach() throw();

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

Возвращает дескриптор, CAccessToken который был отключен.

Замечания

Этот метод отменяет CAccessTokenвладение маркером доступа.

CAccessToken::D isablePrivilege

Вызовите этот метод, чтобы отключить привилегии в объекте CAccessToken .

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

Параметры

pszPrivilege
Указатель на строку, содержащую привилегию для отключения в объекте CAccessToken .

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

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

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

CAccessToken::D isablePrivileges

Вызовите этот метод, чтобы отключить один или несколько привилегий в объекте CAccessToken .

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

Параметры

rPrivileges
Указатель на массив строк, содержащий привилегии для отключения в объекте CAccessToken .

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

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

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

CAccessToken::EnablePrivilege

Вызовите этот метод, чтобы включить привилегии в объекте CAccessToken .

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

Параметры

pszPrivilege
Указатель на строку, содержащую привилегию для включения в CAccessToken объекте.

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

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

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

CAccessToken::EnablePrivileges

Вызовите этот метод для включения одного или нескольких привилегий в объекте CAccessToken .

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

Параметры

rPrivileges
Указатель на массив строк, содержащий привилегии для включения в CAccessToken объекте.

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

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

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

CAccessToken::GetDefaultDacl

Вызовите этот метод, чтобы вернуть CAccessToken daCL объекта по умолчанию.

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

Параметры

pDacl
Указатель на объект класса CDacl, который получит CAccessToken DACL по умолчанию объекта.

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

Возвращает значение TRUE, если значение DACL по умолчанию было восстановлено, значение FALSE в противном случае.

CAccessToken::GetEffectiveToken

Вызовите этот метод, чтобы получить CAccessToken объект, равный маркеру доступа для текущего потока.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Параметры

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

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

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

CAccessToken::GetGroups

Вызовите этот метод, чтобы вернуть CAccessToken группы маркеров объекта.

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

Параметры

pGroups
Указатель на объект класса CTokenGroups, который получит сведения о группе.

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

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

CAccessToken::GetHandle

Вызовите этот метод, чтобы получить дескриптор маркера доступа.

HANDLE GetHandle() const throw();

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

Возвращает дескриптор CAccessToken маркера доступа объекта.

CAccessToken::GetImpersonationLevel

Вызовите этот метод, чтобы получить уровень олицетворения из маркера доступа.

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

Параметры

pImpersonationLevel
Указатель на тип перечисления SECURITY_IMPERSONATION_LEVEL , который получит сведения об уровне олицетворения.

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

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

CAccessToken::GetLogonSessionId

Вызовите этот метод, чтобы получить идентификатор сеанса входа, связанный CAccessToken с объектом.

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

Параметры

pluid
Указатель на LUID , который получит идентификатор сеанса входа.

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

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

Замечания

В отладочных сборках ошибка утверждения будет возникать, если pluid является недопустимым значением.

CAccessToken::GetLogonSid

Вызовите этот метод, чтобы получить идентификатор безопасности входа, связанный CAccessToken с объектом.

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

Параметры

pSid
Указатель на объект класса CSid.

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

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

Замечания

В отладочных сборках ошибка утверждения будет возникать, если pSid является недопустимым значением.

CAccessToken::GetOwner

Вызовите этот метод, чтобы получить владельца, связанного CAccessToken с объектом.

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

Параметры

pSid
Указатель на объект класса CSid.

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

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

Замечания

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

CAccessToken::GetPrimaryGroup

Вызовите этот метод, чтобы получить основную группу, связанную с CAccessToken объектом.

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

Параметры

pSid
Указатель на объект класса CSid.

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

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

Замечания

Группа устанавливается по умолчанию для любых объектов, созданных при действии этого маркера доступа.

CAccessToken::GetPrivileges

Вызовите этот метод, чтобы получить привилегии, связанные с CAccessToken объектом.

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

Параметры

pPrivileges
Указатель на объект класса CTokenPrivileges, который получит привилегии.

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

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

CAccessToken::GetProcessToken

Вызовите этот метод, чтобы инициализировать CAccessToken маркер доступа из заданного процесса.

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

Параметры

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

hProcess
Обработайте процесс, маркер доступа которого открыт. Если используется значение NULL по умолчанию, используется текущий процесс.

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

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

Замечания

Вызывает функцию OpenProcessToken Win32.

CAccessToken::GetProfile

Вызовите этот метод, чтобы получить дескриптор, указывающий на профиль пользователя, связанный CAccessToken с объектом.

HANDLE GetProfile() const throw();

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

Возвращает дескриптор, указывающий на профиль пользователя или ЗНАЧЕНИЕ NULL, если профиль отсутствует.

CAccessToken::GetSource

Вызовите этот метод, чтобы получить источник CAccessToken объекта.

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

Параметры

pSource
Указатель на структуру TOKEN_SOURCE .

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

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

CAccessToken::GetStatistics

Вызовите этот метод, чтобы получить сведения, связанные с CAccessToken объектом.

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

Параметры

pStatistics
Указатель на структуру TOKEN_STATISTICS .

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

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

CAccessToken::GetTerminalServicesSessionId

Вызовите этот метод, чтобы получить идентификатор сеанса служб терминалов, связанный CAccessToken с объектом.

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

Параметры

pdwSessionId
Идентификатор сеанса служб терминалов.

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

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

CAccessToken::GetThreadToken

Вызовите этот метод для инициализации CAccessToken маркера из данного потока.

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

Параметры

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

hThread
Обработка потока, маркер доступа которого открыт.

bOpenAsSelf
Указывает, следует ли выполнять проверку доступа в контексте безопасности потока, вызывающего GetThreadToken метод, или в контексте безопасности процесса для вызывающего потока.

Если этот параметр имеет значение FALSE, проверка доступа выполняется с помощью контекста безопасности для вызывающего потока. Если поток олицетворяет клиента, этот контекст безопасности может быть процессом клиента. Если этот параметр имеет значение TRUE, проверка доступа выполняется с помощью контекста безопасности процесса для вызывающего потока.

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

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

CAccessToken::GetTokenId

Вызовите этот метод, чтобы получить идентификатор маркера, связанный CAccessToken с объектом.

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

Параметры

pluid
Указатель на LUID , который получит идентификатор токена.

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

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

CAccessToken::GetType

Вызовите этот метод, чтобы получить тип маркера CAccessToken объекта.

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

Параметры

pType
Адрес переменной TOKEN_TYPE , которая при успешном выполнении получает тип маркера.

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

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

Замечания

Тип перечисления TOKEN_TYPE содержит значения, которые различают первичный маркер и маркер олицетворения.

CAccessToken::GetUser

Вызовите этот метод, чтобы определить пользователя, связанного CAccessToken с объектом.

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

Параметры

pSid
Указатель на объект класса CSid.

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

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

CAccessToken::HKeyCurrentUser

Вызовите этот метод, чтобы получить дескриптор, указывающий на профиль пользователя, связанный CAccessToken с объектом.

HKEY HKeyCurrentUser() const throw();

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

Возвращает дескриптор, указывающий на профиль пользователя или ЗНАЧЕНИЕ NULL, если профиль отсутствует.

CAccessToken::Impersonate

Вызовите этот метод, чтобы назначить олицетворение CAccessToken потоку.

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

Параметры

hThread
Дескриптор потока, чтобы назначить маркер олицетворения. Этот дескриптор должен быть открыт с правами доступа TOKEN_IMPERSONATE. Если значение hThread равно NULL, метод приводит к остановке потока с помощью маркера олицетворения.

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

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

Замечания

В отладочных сборках ошибка утверждения будет возникать, если CAccessToken у маркера нет допустимого указателя.

Класс CAutoRevertImpersonation можно использовать для автоматического возврата олицетворенных маркеров доступа.

CAccessToken::ImpersonateLoggedOnUser

Вызовите этот метод, чтобы разрешить вызывающему потоку олицетворение контекста безопасности пользователя, вошедшего в систему.

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

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

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

Замечания

Внимание

Если вызов функции олицетворения завершается ошибкой по какой-либо причине, клиент не олицетворен, и запрос клиента выполняется в контексте безопасности процесса, из которого был выполнен вызов. Если процесс выполняется в качестве учетной записи с высоким уровнем привилегий или в качестве члена административной группы, пользователь может иметь возможность выполнять действия, которые он или она в противном случае будут запрещены. Поэтому возвращаемое значение для этой функции всегда должно быть подтверждено.

CAccessToken::IsTokenRestricted

Вызовите этот метод, чтобы проверить, содержит ли CAccessToken объект список ограниченных идентификаторов SID.

bool IsTokenRestricted() const throw();

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

Возвращает значение TRUE, если объект содержит список ограничений идентификаторов SID, FALSE, если нет ограничений идентификаторов SID или если метод завершается ошибкой.

CAccessToken::LoadUserProfile

Вызовите этот метод, чтобы загрузить профиль пользователя, связанный CAccessToken с объектом.

bool LoadUserProfile() throw(...);

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

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

Замечания

В отладочных сборках ошибка утверждения будет возникать, если CAccessToken он не содержит допустимый маркер или если профиль пользователя уже существует.

CAccessToken::LogonUser

Вызовите этот метод, чтобы создать сеанс входа для пользователя, связанного с заданными учетными данными.

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

Параметры

pszUserName
Указатель на строку, завершающую значение NULL, которая указывает имя пользователя. Это имя учетной записи пользователя для входа.

pszDomain
Указатель на строку, завершающую значение NULL, которая указывает имя домена или сервера, база данных учетной записи которой содержит учетную запись pszUserName .

pszPassword
Указатель на строку, завершающуюся значением NULL, которая задает пароль для учетной записи пользователя, указанной в pszUserName.

dwLogonType
Указывает тип выполняемой операции входа. Дополнительные сведения см. в разделе LogonUser .

dwLogonProvider
Указывает поставщика входа. Дополнительные сведения см. в разделе LogonUser .

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

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

Замечания

Маркер доступа, полученный от входа, будет связан с CAccessTokenним. Для успешного выполнения CAccessToken этого метода объект должен содержать SE_TCB_NAME привилегий, определяя владельца в рамках базы доверенных компьютеров. Дополнительные сведения о необходимых привилегиях см. в разделе LogonUser .

CAccessToken::OpenCOMClientToken

Вызовите этот метод из COM-сервера, обрабатывая вызов от клиента, чтобы инициализировать CAccessToken маркер доступа из COM-клиента.

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

Параметры

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

bImpersonate
Если значение TRUE, текущий поток будет олицетворять вызывающий COM-клиент, если этот вызов выполнен успешно. Если значение FALSE, маркер доступа будет открыт, но поток не будет иметь маркер олицетворения после завершения этого вызова.

bOpenAsSelf
Указывает, следует ли выполнять проверку доступа в контексте безопасности потока, вызывающего метод GetThreadToken , или в контексте безопасности процесса для вызывающего потока.

Если этот параметр имеет значение FALSE, проверка доступа выполняется с помощью контекста безопасности для вызывающего потока. Если поток олицетворяет клиента, этот контекст безопасности может быть процессом клиента. Если этот параметр имеет значение TRUE, проверка доступа выполняется с помощью контекста безопасности процесса для вызывающего потока.

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

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

Замечания

Класс CAutoRevertImpersonation можно использовать для автоматического возврата олицетворенных маркеров доступа, созданных путем задания флага bImpersonate значение TRUE.

CAccessToken::OpenNamedPipeClientToken

Вызовите этот метод из сервера, выполняя запросы на именованный канал, чтобы инициализировать CAccessToken маркер доступа от клиента.

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

Параметры

hPipe
Дескриптор именованного канала.

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

bImpersonate
Если значение TRUE, текущий поток будет олицетворять клиент вызывающего канала, если этот вызов выполнен успешно. Если значение FALSE, маркер доступа будет открыт, но поток не будет иметь маркер олицетворения после завершения этого вызова.

bOpenAsSelf
Указывает, следует ли выполнять проверку доступа в контексте безопасности потока, вызывающего метод GetThreadToken , или в контексте безопасности процесса для вызывающего потока.

Если этот параметр имеет значение FALSE, проверка доступа выполняется с помощью контекста безопасности для вызывающего потока. Если поток олицетворяет клиента, этот контекст безопасности может быть процессом клиента. Если этот параметр имеет значение TRUE, проверка доступа выполняется с помощью контекста безопасности процесса для вызывающего потока.

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

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

Замечания

Класс CAutoRevertImpersonation можно использовать для автоматического возврата олицетворенных маркеров доступа, созданных путем задания флага bImpersonate значение TRUE.

CAccessToken::OpenRPCClientToken

Вызовите этот метод из сервера, обрабатывающего вызов от клиента RPC, чтобы инициализировать CAccessToken маркер доступа от клиента.

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

Параметры

BindingHandle
Дескриптор привязки на сервере, представляющий привязку к клиенту.

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

bImpersonate
Если значение TRUE, текущий поток будет олицетворять вызывающий клиент RPC, если этот вызов выполнен успешно. Если значение FALSE, маркер доступа будет открыт, но поток не будет иметь маркер олицетворения после завершения этого вызова.

bOpenAsSelf
Указывает, следует ли выполнять проверку доступа в контексте безопасности потока, вызывающего метод GetThreadToken , или в контексте безопасности процесса для вызывающего потока.

Если этот параметр имеет значение FALSE, проверка доступа выполняется с помощью контекста безопасности для вызывающего потока. Если поток олицетворяет клиента, этот контекст безопасности может быть процессом клиента. Если этот параметр имеет значение TRUE, проверка доступа выполняется с помощью контекста безопасности процесса для вызывающего потока.

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

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

Замечания

Класс CAutoRevertImpersonation можно использовать для автоматического возврата олицетворенных маркеров доступа, созданных путем задания флага bImpersonate значение TRUE.

CAccessToken::OpenThreadToken

Вызовите этот метод, чтобы задать уровень олицетворения, а затем инициализировать CAccessToken маркер из заданного потока.

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

Параметры

dwDesiredAccess
Указывает маску доступа, указывающую запрошенные типы доступа к маркеру доступа. Эти запрошенные типы доступа сравниваются с DACL маркера, чтобы определить, какие доступы предоставляются или запрещены.

bImpersonate
Если значение TRUE, поток останется на запрошенной уровне олицетворения после завершения этого метода. Если значение FALSE, поток вернется к исходному уровню олицетворения.

bOpenAsSelf
Указывает, следует ли выполнять проверку доступа в контексте безопасности потока, вызывающего метод GetThreadToken , или в контексте безопасности процесса для вызывающего потока.

Если этот параметр имеет значение FALSE, проверка доступа выполняется с помощью контекста безопасности для вызывающего потока. Если поток олицетворяет клиента, этот контекст безопасности может быть процессом клиента. Если этот параметр имеет значение TRUE, проверка доступа выполняется с помощью контекста безопасности процесса для вызывающего потока.

sil
Указывает SECURITY_IMPERSONATION_LEVEL перечислимый тип, который предоставляет уровень олицетворения маркера.

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

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

Замечания

OpenThreadToken аналогично CAccessToken::GetThreadToken, но задает уровень олицетворения перед инициализацией CAccessToken из маркера доступа потока.

Класс CAutoRevertImpersonation можно использовать для автоматического возврата олицетворенных маркеров доступа, созданных путем задания флага bImpersonate значение TRUE.

CAccessToken::P rivilegeCheck

Вызовите этот метод, чтобы определить, включен ли указанный набор привилегий в объекте CAccessToken .

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

Параметры

RequiredPrivileges
Указатель на структуру PRIVILEGE_SET .

pbResult
Указатель на значение наборов методов, указывающих, включены ли все указанные привилегии в объекте CAccessToken .

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

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

Замечания

При PrivilegeCheck возврате Attributes член каждой структуры LUID_AND_ATTRIBUTES имеет значение SE_PRIVILEGE_USED_FOR_ACCESS, если включена соответствующая привилегия. Этот метод вызывает функцию PrivilegeCheck Win32.

CAccessToken::Revert

Вызовите этот метод, чтобы остановить поток от использования маркера олицетворения.

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

Параметры

hThread
Дескриптор потока, чтобы вернуться из олицетворения. Если значение hThread равно NULL, предполагается, что текущий поток.

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

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

Замечания

Возврат маркеров олицетворения можно выполнять автоматически с помощью класса CAutoRevertImpersonation.

CAccessToken::SetDefaultDacl

Вызовите этот метод, чтобы задать daCL по умолчанию объекта CAccessToken .

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

Параметры

rDacl
Новые сведения о классе CDacl по умолчанию.

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

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

Замечания

DaCL по умолчанию — это DACL, используемый по умолчанию при создании новых объектов с помощью этого маркера доступа.

CAccessToken::SetOwner

Вызовите этот метод, чтобы задать владельца CAccessToken объекта.

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

Параметры

rSid
Объект класса CSid, содержащий сведения о владельце.

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

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

Замечания

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

CAccessToken::SetPrimaryGroup

Вызовите этот метод, чтобы задать основную группу CAccessToken объекта.

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

Параметры

rSid
Объект класса CSid, содержащий сведения о первичной группе.

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

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

Замечания

Основная группа — это группа по умолчанию для новых объектов, созданных при действии этого маркера доступа.

См. также

Пример ATLSecurity
Маркеры доступа
Общие сведения о классе