AddAccessAllowedObjectAce 函式 (securitybaseapi.h)
AddAccessAllowedObjectAce 函式會將存取允許的訪問控制專案 (ACE) 新增至任意訪問控制清單結尾 (DACL) 。 新的 ACE 可以將存取權授與物件,或授與物件上的屬性集或屬性。 您也可以使用 AddAccessAllowedObjectAce 來新增只有指定類型的子物件可以繼承的 ACE。
語法
BOOL AddAccessAllowedObjectAce(
[in, out] PACL pAcl,
[in] DWORD dwAceRevision,
[in] DWORD AceFlags,
[in] DWORD AccessMask,
[in, optional] GUID *ObjectTypeGuid,
[in, optional] GUID *InheritedObjectTypeGuid,
[in] PSID pSid
);
參數
[in, out] pAcl
DACL 的指標。 AddAccessAllowedObjectAce 函式會將存取允許的 ACE 新增至此 DACL 的結尾。 ACE 的格式為 ACCESS_ALLOWED_OBJECT_ACE 結構。
[in] dwAceRevision
指定要修改之 DACL 的修訂層級。 此值必須ACL_REVISION_DS。 如果 DACL 的修訂層級低於 ACL_REVISION_DS,則函式會將它變更為ACL_REVISION_DS。
[in] AceFlags
一組控制 ACE 繼承的位旗標。 函式會在新 ACE ACE_HEADER 結構的 AceFlags 成員中設定這些旗標。 此參數可以是下列值的組合。
值 | 意義 |
---|---|
|
ACE 會由容器對象繼承。 |
|
ACE 不適用於指派 ACL) (訪問控制清單 的物件,但可由子物件繼承。 |
|
表示繼承的 ACE。 此旗標允許變更物件樹狀結構上的安全性以修改繼承 ACE 的作業,同時不會變更直接套用至物件的 ACE。 |
|
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE位不會傳播至繼承的ACE。 |
|
ACE 是由非container 對象繼承。 |
[in] AccessMask
使用 ACCESS_MASK 格式的一組位旗標。 這些旗標會指定新 ACE 允許指定 安全性識別碼 的訪問許可權, (SID) 。
[in, optional] ObjectTypeGuid
GUID 結構的指標,可識別受新 ACE 保護的物件、屬性集或屬性類型。 如果此參數為 NULL,新的 ACE 會保護指派 DACL 的物件。
[in, optional] InheritedObjectTypeGuid
GUID 結構的指標,識別可繼承新 ACE 的物件類型。 如果此參數不是 NULL,則只有指定的物件類型可以繼承 ACE。 如果 為 NULL,則任何類型的子物件都可以繼承 ACE。 不論是哪一種情況,繼承也會受到 AceFlags 參數的值,以及針對子物件上所放置之繼承的任何保護來控制。
[in] pSid
SID 的指標,可識別新 ACE 允許存取的使用者、群組或 登入會話 。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 以下是可能的錯誤值。
傳回碼 | Description |
---|---|
|
新的 ACE 不適用於 ACL。 需要較大的 ACL 緩衝區。 |
|
指定的 ACL 格式不正確。 |
|
AceFlags 參數無效。 |
|
指定的 SID 在結構上無效。 |
|
指定的修訂未知或與 ACL 不相容。 |
|
已成功新增 ACE。 |
備註
如果 ObjectTypeGuid 和 InheritedObjectTypeGuid 都是 NULL,請使用 AddAccessAllowedAceEx 函式,而不是 AddAccessAllowedObjectAce。 這是建議的,因為 ACCESS_ALLOWED_ACE 比 ACCESS_ALLOWED_OBJECT_ACE小且更有效率。
呼叫端必須確定 ACE 會以正確的順序新增至 DACL。 如需詳細資訊,請參閱 DACL 中的 ACE 順序。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | securitybaseapi.h (包括 Windows.h) |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |