共用方式為


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 時,請確定下列事項:現有的權杖有效(且使用者未輸入)和 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。

傳回值

如果已復原預設 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 範例
存取權杖
類別概觀