checkTokenMembership 函式 (securitybaseapi.h)

CheckTokenMembership函式會判斷存取權杖中是否啟用指定的安全識別碼 (SID) 。 如果您想要判斷應用程式容器權杖的群組成員資格,您必須使用 CheckTokenMembershipEx 函 式。

語法

BOOL CheckTokenMembership(
  [in, optional] HANDLE TokenHandle,
  [in]           PSID   SidToCheck,
  [out]          PBOOL  IsMember
);

參數

[in, optional] TokenHandle

存取權杖的控制碼。 控制碼必須具有權杖TOKEN_QUERY存取權。 權杖必須是 模擬權杖

如果 TokenHandleNullCheckTokenMembership 會使用呼叫執行緒的模擬權杖。 如果執行緒未模擬,函式會複製執行緒 的主要權杖 ,以建立 模擬權杖

[in] SidToCheck

SID結構的指標。 CheckTokenMembership函式會檢查存取權杖的使用者和群組 SID 中是否有此 SID。

[out] IsMember

接收檢查結果之變數的指標。 如果 SID 存在且具有 SE_GROUP_ENABLED 屬性, IsMember 會 傳回 TRUE;否則會傳回 FALSE

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

CheckTokenMembership函式可簡化判斷 SID 是否存在並啟用存取權杖的程式。

即使權杖中有 SID,系統可能不會在存取檢查中使用 SID。 SID 可能會停用或具有 SE_GROUP_USE_FOR_DENY_ONLY 屬性。 系統只會使用已啟用的 SID 在執行存取檢查時授與存取權。 如需詳細資訊,請參閱 存取權杖中的 SID 屬性

如果 TokenHandle 是受限制的權杖,或者 如果 TokenHandleNull ,而且呼叫執行緒的目前有效權杖是受限制的權杖, CheckTokenMembership 也會檢查 SID 是否存在於限制 SID 清單中。

範例

下列範例顯示檢查系統管理員本機群組中成員資格的權杖。

BOOL IsUserAdmin(VOID)
/*++ 
Routine Description: This routine returns TRUE if the caller's
process is a member of the Administrators local group. Caller is NOT
expected to be impersonating anyone and is expected to be able to
open its own process and process token. 
Arguments: None. 
Return Value: 
   TRUE - Caller has Administrators local group. 
   FALSE - Caller does not have Administrators local group. --
*/ 
{
    BOOL b;
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    PSID AdministratorsGroup;
    b = AllocateAndInitializeSid(
        &NtAuthority,
        2,
        SECURITY_BUILTIN_DOMAIN_RID,
        DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0,
        &AdministratorsGroup );

    if(b)
    {
        if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
        {
             b = FALSE;
        }
        FreeSid(AdministratorsGroup);
    }

    return(b);
}

需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 securitybaseapi.h (包含 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

存取控制概觀

AccessCheck

基本存取控制函式

CheckTokenMembershipEx

CreateRestrictedToken