Класс 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 при сбое.
Замечания
CreateProcessAsUser
CreateProcessAsUser
функция 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 при сбое.
Замечания
Основная группа — это группа по умолчанию для новых объектов, созданных при действии этого маркера доступа.