共用方式為


CAccessToken 類別

這個類別是存取令牌的包裝函式。

重要

這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。

語法

class CAccessToken

成員

公用建構函式

名稱 描述
CAccessToken::~CAccessToken 解構函式。

公用方法

名稱 描述
CAccessToken::Attach 呼叫此方法以取得指定存取令牌句柄的擁有權。
CAccessToken::CheckTokenMembership 呼叫這個方法,以判斷物件中 CAccessToken 是否已啟用指定的 SID。
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 對象相關聯的Logon SID。
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 伺服器內呼叫這個方法,以從 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 中的 存取控制

需求

標頭: atlsecurity.h

CAccessToken::Attach

呼叫此方法以取得指定存取令牌句柄的擁有權。

void Attach(HANDLE hToken) throw();

參數

hToken
存取令牌的句柄。

備註

在偵錯組建中,如果 CAccessToken 對象已經有存取令牌的擁有權,就會發生判斷提示錯誤。

CAccessToken::~CAccessToken

解構函式。

virtual ~CAccessToken() throw();

備註

釋放所有已配置的資源。

CAccessToken::CheckTokenMembership

呼叫這個方法,以判斷物件中 CAccessToken 是否已啟用指定的 SID。

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

參數

rSid
CSid Class 物件的參考。

pbIsMember
接收檢查結果的變數指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

方法 CheckTokenMembership 會檢查存取令牌的使用者和群組 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 列舉型別。

傳回值

在成功時傳回 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 會呼叫 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,新處理序會有與呼叫處理序相同的目前磁碟機和目錄。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

CreateProcessAsUserCreateProcessAsUser 使用 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物件,指定要在受限制令牌中刪除的許可權。 預設值會建立空的物件。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

CreateRestrictedToken會使用 CreateRestrictedToken Win32 函式來建立具有限制的新CAccessToken物件。

重要

使用 CreateRestrictedToken時,請確定下列事項:現有的令牌有效(且使用者未輸入)和 SidsToDisablePrivilegesToDelete 都是有效的(且使用者未輸入)。 如果方法傳回 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。

傳回值

如果已復原預設 DACL,則傳回 TRUE,否則傳回 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 對象相關聯的Logon SID。

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

參數

pSid
CSid Class 物件的指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

在偵錯組建中,如果 pSid 是無效的值,就會發生判斷提示錯誤。

CAccessToken::GetOwner

呼叫這個方法以取得與 CAccessToken 對象相關聯的擁有者。

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

參數

pSid
CSid Class 物件的指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

此存取令牌生效時,預設會在任何建立的對象上設定擁有者。

CAccessToken::GetPrimaryGroup

呼叫這個方法以取得與 CAccessToken 對象相關聯的主要群組。

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

參數

pSid
CSid Class 物件的指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

此群組預設會在此存取令牌生效時所建立的任何對象上設定。

CAccessToken::GetPrivileges

呼叫這個方法以取得與 CAccessToken 對象相關聯的許可權。

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

參數

pPrivileges
將接收許可權的 CTokenPrivileges Class 物件的指標。

傳回值

在成功時傳回 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 Class 物件的指標。

傳回值

在成功時傳回 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();

傳回值

如果物件包含限制 SID 的清單,則傳回 TRUE;如果沒有限制的 SID 或方法失敗,則傳回 FALSE。

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 伺服器內呼叫這個方法,以從 COM 用戶端存取權杖初始化 CAccessToken

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 Class 物件。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

擁有者是預設擁有者,用於這個存取令牌生效時所建立的新物件。

CAccessToken::SetPrimaryGroup

呼叫此方法以設定物件的主要群組 CAccessToken

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

參數

rSid
包含主要群組資訊的 CSid Class 物件。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

當這個存取令牌生效時,主要群組是新對象的預設群組。

另請參閱

ATLSecurity 範例
存取權杖
類別概觀