CAccessToken 클래스

이 클래스는 액세스 토큰에 대한 래퍼입니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

class CAccessToken

멤버

공용 생성자

속성 설명
CAccessToken::~CAccessToken 소멸자입니다.

공용 메서드

이름 설명
CAccessToken::Attach 지정된 액세스 토큰 핸들의 소유권을 가져오려면 이 메서드를 호출합니다.
CAccessToken::CheckTokenMembership 개체에서 지정된 SID를 사용할 수 있는지 확인하려면 이 메서드를 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 개체의 기본 DACL을 CAccessToken 반환하려면 이 메서드를 호출합니다.
CAccessToken::GetEffectiveToken 현재 스레드에 적용된 CAccessToken 액세스 토큰과 동일한 개체를 가져오려면 이 메서드를 호출합니다.
CAccessToken::GetGroups 개체의 토큰 그룹을 반환 CAccessToken 하려면 이 메서드를 호출합니다.
CAccessToken::GetHandle 액세스 토큰에 대한 핸들을 검색하려면 이 메서드를 호출합니다.
CAccessToken::GetImpersonationLevel 액세스 토큰에서 가장 수준을 가져오려면 이 메서드를 호출합니다.
CAccessToken::GetLogonSessionId 이 메서드를 호출하여 개체와 연결된 로그온 세션 ID를 CAccessToken 가져옵니다.
CAccessToken::GetLogonSid 이 메서드를 호출하여 개체와 연결된 로그온 SID를 CAccessToken 가져옵니다.
CAccessToken::GetOwner 개체와 연결된 소유자를 얻으려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetPrimaryGroup 이 메서드를 호출하여 개체와 CAccessToken 연결된 기본 그룹을 가져옵니다.
CAccessToken::GetPrivileges 개체와 연결된 권한을 얻으려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetProcessToken 지정된 프로세스의 액세스 토큰을 사용해서 CAccessToken을 초기화하려면 이 메서드를 호출합니다.
CAccessToken::GetProfile 개체와 연결된 사용자 프로필을 가리키는 핸들을 가져오려면 이 메서드를 CAccessToken 호출합니다.
CAccessToken::GetSource 개체의 소스를 얻으려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetStatistics 개체와 연결된 정보를 얻으려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetTerminalServicesSessionId 이 메서드를 호출하여 개체와 연결된 터미널 서비스 세션 ID를 CAccessToken 가져옵니다.
CAccessToken::GetThreadToken 지정된 스레드에서 토큰을 CAccessToken 사용하여 초기화하려면 이 메서드를 호출합니다.
CAccessToken::GetTokenId 개체와 연결된 토큰 ID를 가져오려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetType 개체의 토큰 형식을 가져오려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::GetUser 개체와 연결된 사용자를 식별하려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::HKeyCurrentUser 개체와 연결된 사용자 프로필을 가리키는 핸들을 가져오려면 이 메서드를 CAccessToken 호출합니다.
CAccessToken::Impersonate 스레드에 가장 CAccessToken 을 할당하려면 이 메서드를 호출합니다.
CAccessToken::ImpersonateLoggedOnUser 호출 스레드가 로그온한 사용자의 보안 컨텍스트를 가장할 수 있도록 하려면 이 메서드를 호출합니다.
CAccessToken::IsTokenRestricted 개체에 제한된 SID 목록이 포함되어 있는지 CAccessToken 테스트하려면 이 메서드를 호출합니다.
CAccessToken::LoadUserProfile 개체와 연결된 사용자 프로필을 로드하려면 이 메서드를 호출합니다 CAccessToken .
CAccessToken::LogonUser 이 메서드를 호출하여 지정된 자격 증명과 연결된 사용자에 대한 로그온 세션을 만듭니다.
CAccessToken::OpenCOMClientToken COM 서버 내에서 이 메서드를 호출하여 클라이언트의 호출을 처리하여 COM 클라이언트의 액세스 토큰을 사용하여 초기화 CAccessToken 합니다.
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의 액세스 제어 모델에 대한 소개는 Windows SDK의 Access Control을 참조하세요.

요구 사항

헤더: atlsecurity.h

CAccessToken::Attach

지정된 액세스 토큰 핸들의 소유권을 가져오려면 이 메서드를 호출합니다.

void Attach(HANDLE hToken) throw();

매개 변수

hToken
액세스 토큰에 대한 핸들입니다.

설명

디버그 빌드에서 개체에 액세스 토큰의 소유권이 CAccessToken 이미 있는 경우 어설션 오류가 발생합니다.

CAccessToken::~CAccessToken

소멸자입니다.

virtual ~CAccessToken() throw();

설명

할당된 모든 리소스를 해제합니다.

CAccessToken::CheckTokenMembership

개체에서 지정된 SID를 사용할 수 있는지 확인하려면 이 메서드를 CAccessToken 호출합니다.

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

매개 변수

rSid
CSid 클래스 개체에 대한 참조입니다.

pbIsMember
검사 결과를 받는 변수에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 메서드는 CheckTokenMembership 액세스 토큰의 사용자 및 그룹 SID에 SID가 있는지 검사. SID가 있고 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 열거형 형식을 지정합니다.

Return Value

성공하면 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이면 토큰이 기본 보안 설명자를 가져오고 핸들을 상속할 수 없습니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

CreatePrimaryToken는 DuplicateTokenEx를 호출하여 새 기본 토큰을 만듭니다.

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인 경우 새 프로세스는 호출 프로세스와 동일한 현재 드라이브 및 디렉터리를 가집니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

CreateProcessAsUser 에서는 CreateProcessAsUser Win32 함수를 사용하여 개체가 나타내는 CAccessToken 사용자의 보안 컨텍스트에서 실행되는 새 프로세스를 만듭니다. 필요한 매개 변수에 대한 전체 설명은 CreateProcessAsUser 함수에 대한 설명을 참조하세요.

이 메서드가 성공하려면 개체가 CAccessToken AssignPrimaryToken(제한된 토큰이 아닌 경우) 및 IncreaseQuota 권한을 보유해야 합니다.

CAccessToken::CreateRestrictedToken

이 메서드를 호출하여 제한된 CAccessToken 새 개체를 만듭니다.

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

매개 변수

pRestrictedToken
제한된 CAccessToken 새 개체입니다.

SidsToDisable
CTokenGroups 거부 전용 SID를 지정하는 개체입니다.

SidsToRestrict
CTokenGroups 제한 SID를 지정하는 개체입니다.

PrivilegesToDelete
CTokenPrivileges 제한된 토큰에서 삭제할 권한을 지정하는 개체입니다. 기본값은 빈 개체를 만듭니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

CreateRestrictedToken는 CreateRestrictedToken Win32 함수를 사용하여 제한 사항이 있는 새 CAccessToken 개체를 만듭니다.

Important

사용하는 CreateRestrictedToken경우 다음을 확인합니다. 기존 토큰이 유효하고(사용자가 입력하지 않음) SidsToDisablePrivilegesToDelete 가 모두 유효하며 사용자가 입력하지 않은 상태인지 확인합니다. 메서드가 FALSE를 반환하는 경우 기능을 거부합니다.

CAccessToken::D etach

액세스 토큰의 소유권을 취소하려면 이 메서드를 호출합니다.

HANDLE Detach() throw();

Return Value

분리된 핸들을 CAccessToken 반환합니다.

설명

이 메서드는 액세스 토큰의 CAccessToken소유권을 취소합니다.

CAccessToken::D isablePrivilege

개체에서 권한을 사용하지 않도록 설정하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pszPrivilege
개체에서 사용하지 않도록 설정할 권한이 포함된 문자열에 대한 CAccessToken 포인터입니다.

pPreviousState
권한의 CTokenPrivileges 이전 상태를 포함할 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::D isablePrivileges

개체에서 하나 이상의 권한을 사용하지 않도록 설정하려면 이 메서드를 CAccessToken 호출합니다.

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

매개 변수

rPrivileges
개체에서 사용하지 않도록 설정할 권한이 포함된 문자열 배열에 대한 CAccessToken 포인터입니다.

pPreviousState
권한의 CTokenPrivileges 이전 상태를 포함할 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::EnablePrivilege

개체에서 권한을 사용하도록 설정하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pszPrivilege
개체에서 사용할 수 있는 권한이 포함된 문자열에 대한 CAccessToken 포인터입니다.

pPreviousState
권한의 CTokenPrivileges 이전 상태를 포함할 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::EnablePrivileges

개체에서 하나 이상의 권한을 사용하도록 설정하려면 이 메서드를 CAccessToken 호출합니다.

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

매개 변수

rPrivileges
개체에서 사용할 수 있는 권한이 포함된 문자열 배열에 대한 CAccessToken 포인터입니다.

pPreviousState
권한의 CTokenPrivileges 이전 상태를 포함할 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetDefaultDacl

개체의 기본 DACL을 CAccessToken 반환하려면 이 메서드를 호출합니다.

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

매개 변수

pDacl
개체의 기본 DACL을 받을 CDacl 클래스 개체에 CAccessToken 대한 포인터입니다.

Return Value

기본 DACL이 복구되면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

CAccessToken::GetEffectiveToken

현재 스레드에 적용된 CAccessToken 액세스 토큰과 동일한 개체를 가져오려면 이 메서드를 호출합니다.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

매개 변수

dwDesiredAccess
액세스 토큰에 대해 요청된 액세스 형식을 지정하는 액세스 마스크를 지정합니다. 이러한 요청된 액세스 형식은 토큰의 DACL과 비교하여 액세스가 허용 또는 거부되는 경우를 확인합니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetGroups

개체의 토큰 그룹을 반환 CAccessToken 하려면 이 메서드를 호출합니다.

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

매개 변수

pGroups
그룹 정보를 받을 CTokenGroups 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetHandle

액세스 토큰에 대한 핸들을 검색하려면 이 메서드를 호출합니다.

HANDLE GetHandle() const throw();

Return Value

개체의 액세스 토큰에 CAccessToken 대한 핸들을 반환합니다.

CAccessToken::GetImpersonationLevel

액세스 토큰에서 가장 수준을 가져오려면 이 메서드를 호출합니다.

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

매개 변수

pImpersonationLevel
가장 수준 정보를 받을 SECURITY_IMPERSONATION_LEVEL 열거형 형식에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetLogonSessionId

이 메서드를 호출하여 개체와 연결된 로그온 세션 ID를 CAccessToken 가져옵니다.

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

매개 변수

pluid
로그온 세션 ID를 받을 LUID 에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

디버그 빌드에서 pluid가 잘못된 값인 경우 어설션 오류가 발생합니다.

CAccessToken::GetLogonSid

이 메서드를 호출하여 개체와 연결된 로그온 SID를 CAccessToken 가져옵니다.

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

매개 변수

pSid
CSid 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

디버그 빌드에서 pSid가 잘못된 값인 경우 어설션 오류가 발생합니다.

CAccessToken::GetOwner

개체와 연결된 소유자를 얻으려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pSid
CSid 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 액세스 토큰이 적용되는 동안 만든 개체에 대해 소유자가 기본적으로 설정됩니다.

CAccessToken::GetPrimaryGroup

이 메서드를 호출하여 개체와 CAccessToken 연결된 기본 그룹을 가져옵니다.

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

매개 변수

pSid
CSid 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 액세스 토큰이 적용되는 동안 만들어진 모든 개체에 대해 그룹이 기본적으로 설정됩니다.

CAccessToken::GetPrivileges

개체와 연결된 권한을 얻으려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pPrivileges
권한을 받을 CTokenPrivileges 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetProcessToken

지정된 프로세스의 액세스 토큰을 사용해서 CAccessToken을 초기화하려면 이 메서드를 호출합니다.

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

매개 변수

dwDesiredAccess
액세스 토큰에 대해 요청된 액세스 형식을 지정하는 액세스 마스크를 지정합니다. 이러한 요청된 액세스 형식은 토큰의 DACL과 비교하여 액세스가 허용 또는 거부되는 경우를 확인합니다.

hProcess
액세스 토큰이 열린 프로세스에 대한 핸들입니다. NULL의 기본값을 사용하는 경우 현재 프로세스가 사용됩니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

OpenProcessToken Win32 함수를 호출합니다.

CAccessToken::GetProfile

개체와 연결된 사용자 프로필을 가리키는 핸들을 가져오려면 이 메서드를 CAccessToken 호출합니다.

HANDLE GetProfile() const throw();

Return Value

사용자 프로필을 가리키는 핸들을 반환하거나 프로필이 없는 경우 NULL을 반환합니다.

CAccessToken::GetSource

개체의 소스를 얻으려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pSource
TOKEN_SOURCE 구조체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetStatistics

개체와 연결된 정보를 얻으려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pStatistics
TOKEN_STATISTICS 구조체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetTerminalServicesSessionId

이 메서드를 호출하여 개체와 연결된 터미널 서비스 세션 ID를 CAccessToken 가져옵니다.

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

매개 변수

pdwSessionId
터미널 서비스 세션 ID입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetThreadToken

지정된 스레드에서 토큰을 CAccessToken 사용하여 초기화하려면 이 메서드를 호출합니다.

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

매개 변수

dwDesiredAccess
액세스 토큰에 대해 요청된 액세스 형식을 지정하는 액세스 마스크를 지정합니다. 이러한 요청된 액세스 형식은 토큰의 DACL과 비교하여 액세스가 허용 또는 거부되는 경우를 확인합니다.

hThread
액세스 토큰이 열려 있는 스레드에 대한 핸들입니다.

bOpenAsSelf
메서드를 호출하는 스레드의 보안 컨텍스트 또는 호출 GetThreadToken 스레드에 대한 프로세스의 보안 컨텍스트에 대해 액세스 검사 만들 것인지 여부를 나타냅니다.

이 매개 변수가 FALSE이면 호출 스레드에 대한 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다. 스레드가 클라이언트를 가장하는 경우 이 보안 컨텍스트는 클라이언트 프로세스의 컨텍스트일 수 있습니다. 이 매개 변수가 TRUE이면 호출 스레드에 대한 프로세스의 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetTokenId

개체와 연결된 토큰 ID를 가져오려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pluid
토큰 ID를 받을 LUID 에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::GetType

개체의 토큰 형식을 가져오려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pType
성공 시 토큰 형식을 수신하는 TOKEN_TYPE 변수의 주소입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

TOKEN_TYPE 열거형 형식에는 기본 토큰과 가장 토큰을 구분하는 값이 포함되어 있습니다.

CAccessToken::GetUser

개체와 연결된 사용자를 식별하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

pSid
CSid 클래스 개체에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CAccessToken::HKeyCurrentUser

개체와 연결된 사용자 프로필을 가리키는 핸들을 가져오려면 이 메서드를 CAccessToken 호출합니다.

HKEY HKeyCurrentUser() const throw();

Return Value

사용자 프로필을 가리키는 핸들을 반환하거나 프로필이 없는 경우 NULL을 반환합니다.

CAccessToken::Impersonate

스레드에 가장 CAccessToken 을 할당하려면 이 메서드를 호출합니다.

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

매개 변수

hThread
가장 토큰을 할당할 스레드에 대한 핸들입니다. 이 핸들은 TOKEN_IMPERSONATE 액세스 권한으로 열렸어야 합니다. hThread가 NULL인 경우 메서드는 스레드가 가장 토큰 사용을 중지하도록 합니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

디버그 빌드에서 토큰에 대한 유효한 포인터가 없는 경우 CAccessToken 어설션 오류가 발생합니다.

CAutoRevertImpersonation 클래스를 사용하여 가장된 액세스 토큰을 자동으로 되돌리기 수 있습니다.

CAccessToken::ImpersonateLoggedOnUser

호출 스레드가 로그온한 사용자의 보안 컨텍스트를 가장할 수 있도록 하려면 이 메서드를 호출합니다.

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

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

Important

어떤 이유로든 가장 함수에 대한 호출이 실패하면 클라이언트가 가장되지 않고 호출이 수행된 프로세스의 보안 컨텍스트에서 클라이언트 요청이 수행됩니다. 프로세스가 높은 권한의 계정으로 실행되거나 관리 그룹의 구성원으로 실행되는 경우 사용자는 허용되지 않는 작업을 수행할 수 있습니다. 따라서 이 함수의 반환 값은 항상 확인되어야 합니다.

CAccessToken::IsTokenRestricted

개체에 제한된 SID 목록이 포함되어 있는지 CAccessToken 테스트하려면 이 메서드를 호출합니다.

bool IsTokenRestricted() const throw();

Return Value

개체에 SID 제한 목록이 포함되어 있으면 TRUE를 반환하고, 제한 SID가 없거나 메서드가 실패하는 경우 FALSE를 반환합니다.

CAccessToken::LoadUserProfile

개체와 연결된 사용자 프로필을 로드하려면 이 메서드를 호출합니다 CAccessToken .

bool LoadUserProfile() throw(...);

Return Value

성공하면 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로 끝나는 문자열에 대한 포인터입니다. 로그온할 사용자 계정의 이름입니다.

pszDo기본
계정 데이터베이스에 pszUserName 계정이 포함된 do기본 또는 서버의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

pszPassword
pszUserName에서 지정한 사용자 계정의 텍스트 지우기 암호를 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

dwLogonType
수행할 로그온 작업의 유형을 지정합니다. 자세한 내용은 LogonUser를 참조하세요.

dwLogonProvider
로그온 공급자를 지정합니다. 자세한 내용은 LogonUser를 참조하세요.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

로그온으로 인한 액세스 토큰은 .와 연결 CAccessToken됩니다. 이 메서드가 성공하려면 개체가 CAccessToken 신뢰할 수 있는 컴퓨터 기반의 일부로 소유자를 식별하는 SE_TCB_NAME 권한을 보유해야 합니다. 필요한 권한에 대한 자세한 내용은 LogonUser를 참조하세요.

CAccessToken::OpenCOMClientToken

COM 서버 내에서 이 메서드를 호출하여 클라이언트의 호출을 처리하여 COM 클라이언트의 액세스 토큰을 사용하여 초기화 CAccessToken 합니다.

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

매개 변수

dwDesiredAccess
액세스 토큰에 대해 요청된 액세스 형식을 지정하는 액세스 마스크를 지정합니다. 이러한 요청된 액세스 형식은 토큰의 DACL과 비교하여 액세스가 허용 또는 거부되는 경우를 확인합니다.

bImpersonate
TRUE이면 이 호출이 성공적으로 완료되면 현재 스레드가 호출 COM 클라이언트를 가장합니다. FALSE이면 액세스 토큰이 열리지만 이 호출이 완료되면 스레드에 가장 토큰이 없습니다.

bOpenAsSelf
GetThreadToken 메서드를 호출하는 스레드의 보안 컨텍스트 또는 호출 스레드에 대한 프로세스의 보안 컨텍스트에 대해 검사 액세스가 수행되는지 여부를 나타냅니다.

이 매개 변수가 FALSE이면 호출 스레드에 대한 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다. 스레드가 클라이언트를 가장하는 경우 이 보안 컨텍스트는 클라이언트 프로세스의 컨텍스트일 수 있습니다. 이 매개 변수가 TRUE이면 호출 스레드에 대한 프로세스의 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다.

Return Value

성공하면 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이면 호출 스레드에 대한 프로세스의 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다.

Return Value

성공하면 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이면 호출 스레드에 대한 프로세스의 보안 컨텍스트를 사용하여 액세스 검사 수행됩니다.

Return Value

성공하면 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 열거형 형식을 지정합니다.

Return Value

성공하면 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 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

반환 Attributes 될 때 PrivilegeCheckLUID_AND_ATTRIBUTES 구조체의 멤버는 해당 권한이 사용되는 경우 SE_PRIVILEGE_USED_FOR_ACCESS 설정됩니다. 이 메서드는 PrivilegeCheck Win32 함수를 호출합니다.

CAccessToken::Revert

스레드가 가장 토큰을 사용하지 못하도록 하려면 이 메서드를 호출합니다.

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

매개 변수

hThread
가장에서 되돌리기 스레드에 대한 핸들입니다. hThread가 NULL이면 현재 스레드가 가정됩니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

CAutoRevertImpersonation 클래스를 사용하여 가장 토큰의 역방향을 자동으로 수행할 수 있습니다.

CAccessToken::SetDefaultDacl

개체의 기본 DACL을 설정하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

rDacl
새 기본 CDacl 클래스 정보입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

기본 DACL은 이 액세스 토큰을 사용하여 새 개체를 만들 때 기본적으로 사용되는 DACL입니다.

CAccessToken::SetOwner

개체의 소유자를 설정하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

rSid
소유자 정보를 포함하는 CSid 클래스 개체입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

소유자는 이 액세스 토큰이 적용되는 동안 만든 새 개체에 사용되는 기본 소유자입니다.

CAccessToken::SetPrimaryGroup

개체의 기본 그룹을 설정하려면 이 메서드를 호출합니다 CAccessToken .

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

매개 변수

rSid
기본 그룹 정보를 포함하는 CSid 클래스 개체입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

기본 그룹은 이 액세스 토큰이 적용되는 동안 만들어진 새 개체의 기본 그룹입니다.

참고 항목

ATLSecurity 샘플
액세스 토큰
클래스 개요