AddConditionalAce 函式 (winbase.h)

AddConditionalAce 函式會將條件式訪問控制專案 (ACE) 新增至指定的訪問控制清單 (ACL) 。 條件式 ACE 會指定在存取檢查期間評估的邏輯條件。

語法

BOOL AddConditionalAce(
  [in, out] PACL   pAcl,
  [in]      DWORD  dwAceRevision,
  [in]      DWORD  AceFlags,
  [in]      UCHAR  AceType,
  [in]      DWORD  AccessMask,
  [in]      PSID   pSid,
  [in]      PWCHAR ConditionStr,
  [out]     DWORD  *ReturnLength
);

參數

[in, out] pAcl

ACL 的指標。 此函式會將 ACE 新增至此 ACL。

此參數的值不可以是 NULL

[in] dwAceRevision

指定要修改之 ACL 的修訂層級。 此值可以是ACL_REVISION或ACL_REVISION_DS。 如果 ACL 包含物件特定的 ACE,請使用ACL_REVISION_DS。

[in] AceFlags

一組控制 ACE 繼承的位旗標。 函式會在新 ACE ACE_HEADER 結構的 AceFlags 成員中設定這些旗標。 此參數可以是下列值的組合。

意義
CONTAINER_INHERIT_ACE
ACE 會由容器對象繼承。
INHERIT_ONLY_ACE
ACE 不適用於指派 ACL 的物件,但可由子對象繼承。
INHERITED_ACE
表示繼承的 ACE。 此旗標可讓變更物件樹狀結構上安全性的作業,以修改繼承的 ACE,同時不會變更直接套用至物件的 ACE。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE位不會傳播至繼承的ACE。
OBJECT_INHERIT_ACE
ACE 是由非容器對象繼承。

[in] AceType

ACE 的類型。

這可以是下列其中一個值。

意義
ACCESS_ALLOWED_CALLBACK_ACE_TYPE
0x9
使用 ACCESS_ALLOWED_CALLBACK_ACE 結構的存取允許回呼 ACE。
ACCESS_DENIED_CALLBACK_ACE_TYPE
0xA
使用 ACCESS_DENIED_CALLBACK_ACE 結構的拒絕存取回呼 ACE。
SYSTEM_AUDIT_CALLBACK_ACE_TYPE
0xD
使用 SYSTEM_AUDIT_CALLBACK_ACE 結構的系統稽核回呼 ACE。

[in] AccessMask

指定要授與指定 SID 之訪問許可權的遮罩。

[in] pSid

SID 的指標,表示要授與存取權的使用者、群組或登入帳戶。

[in] ConditionStr

字串,指定要針對 ACE 評估的條件語句。

[out] ReturnLength

ACL 的大小,以位元組為單位。 如果 pACL 參數指定的緩衝區大小不足,此參數的值就是必要的大小。

傳回值

如果函式成功,則會傳回 TRUE

如果函式失敗,則會傳回 FALSE。 如需擴充的錯誤資訊,請呼叫 GetLastError。 以下是可能的錯誤值。

傳回碼 Description
ERROR_INSUFFICIENT_BUFFER
新的 ACE 無法放入 pAcl 緩衝區。

規格需求

需求
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限桌面應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll