共用方式為


ACCESS_DENIED_OBJECT_ACE結構 (winnt.h)

ACCESS_DENIED_OBJECT_ACE結構會定義存取控制專案 (ACE) ,以控制拒絕對物件、屬性集或屬性的存取。 ACE 包含一組存取權限、識別物件類型的GUID,以及識別系統將拒絕存取之信任者的安全性識別碼 (SID) 。 ACE 也包含 GUID 和一組旗標,可控制子物件的 ACE 繼承。

語法

typedef struct _ACCESS_DENIED_OBJECT_ACE {
  ACE_HEADER  Header;
  ACCESS_MASK Mask;
  DWORD       Flags;
  GUID        ObjectType;
  GUID        InheritedObjectType;
  DWORD       SidStart;
} ACCESS_DENIED_OBJECT_ACE, *PACCESS_DENIED_OBJECT_ACE;

成員

Header

ACE_HEADER 結構,指定 ACE 的大小和類型。 它包含旗標,可控制子物件的 ACE 繼承。 ACE_HEADER結構的AceType成員應設定為 ACCESS_DENIED_OBJECT_ACE_TYPE,而 AceSize成員應設定為配置給ACCESS_DENIED_OBJECT_ACE結構的位元組總數。

Mask

指定系統將拒絕信任存取權限的ACCESS_MASK

Flags

一組位旗標,指出 ObjectTypeInheritedObjectType 成員是否存在。 此參數可以是下列一或多個值。

意義
0
ObjectTypeInheritedObjectType都不存在。 SidStart成員緊接在Flags成員之後。
ACE_OBJECT_TYPE_PRESENT
ObjectType 存在且包含 GUID

如果未指定此值, 則 InheritedObjectType 成員會緊接在 Flags 成員之後。

ACE_INHERITED_OBJECT_TYPE_PRESENT
InheritedObjectType 存在且包含 GUID

如果未指定此值,則所有類型的子物件都可以繼承 ACE。

ObjectType

只有在 Flags 成員中設定ACE_OBJECT_TYPE_PRESENT位時,才會存在這個成員。 否則, InheritedObjectType 成員會緊接在 Flags 成員之後。

如果這個成員存在,它是一種 GUID 結構,可識別屬性集、屬性、擴充許可權或子物件的類型。 此 GUID 的用途取決於 Mask 成員中指定的存取權限。

意義
ADS_RIGHT_DS_CONTROL_ACCESS
ObjectTypeGUID可識別延伸存取權限。
ADS_RIGHT_DS_CREATE_CHILD
ObjectTypeGUID會識別子物件的類型。 ACE 控制信任者建立此子物件類型的權利。
ADS_RIGHT_DS_READ_PROP
ObjectTypeGUID會識別物件的屬性集或屬性。 ACE 控制信任者讀取屬性或屬性集的權利。
ADS_RIGHT_DS_WRITE_PROP
ObjectTypeGUID會識別物件的屬性集或屬性。 ACE 控制信任者寫入屬性或屬性集的權利。
ADS_RIGHT_DS_SELF
ObjectTypeGUID會識別已驗證的寫入。

InheritedObjectType

只有在 Flags 成員中設定ACE_INHERITED_OBJECT_TYPE_PRESENT位時,才會存在這個成員。

如果這個成員存在,它是 GUID 結構,可識別可繼承 ACE 的子物件類型。 繼承也會由 ACE_HEADER中的繼承旗標控制,以及針對子物件上所放置之繼承的任何保護。

此成員的位移可能會有所不同。 如果 Flags 成員不包含ACE_OBJECT_TYPE_PRESENT旗標, 則 InheritedObjectType 成員會從 ObjectType 成員指定的位移開始。

SidStart

指定 SID 的第一個DWORD,識別拒絕存取權限的信任者。 SID 的其餘位元組會儲存在 SidStart 成員之後的連續記憶體中。 此 SID 可以附加應用程式資料。

此成員的位移可能會有所不同。 如果 Flags 成員為零, SidStart 成員會從 ObjectType 成員指定的位移開始。 如果 Flags 只包含一個旗標 (ACE_OBJECT_TYPE_PRESENT或ACE_INHERITED_OBJECT_TYPE_PRESENT) , SidStart 成員會從 InheritedObjectType 成員指定的位移開始。

備註

如果未指定 ObjectTypeInheritedObjectTypeGUIDACCESS_DENIED_OBJECT_ACE 結構具有與 ACCESS_DENIED_ACE 結構所使用的語意相同。 在此情況下,請使用 ACCESS_DENIED_ACE 結構,因為它較小且更有效率。

包含 ACCESS_DENIED_OBJECT_ACE 的 ACL 必須在其 ACL 標頭中指定ACL_REVISION_DS修訂編號。

Mask成員所指定的存取權限會拒絕擁有已啟用之 SID且符合SidStart 成員中儲存之 SID的任何信任者。

ACCESS_DENIED_OBJECT_ACE結構可以透過呼叫AddAccessDeniedObjectAce函式,在存取控制清單中建立 (ACL) 。 使用此函式時,如果 ObjectTypeInheritedObjectType 成員中有一個或兩者存在,以及自動設定信任者的 SID,則容納 GUID 結構所需的正確記憶體數量。 此外, 會自動設定 Header.AceTypeHeader.AceSize 成員的值。 在 ACL 外部建立 ACCESS_DENIED_OBJECT_ACE 結構時,必須配置足夠的記憶體,以容納 ObjectTypeInheritedObjectType 成員中的 GUID 結構,如果其中一個或兩者都存在,以及容納 SidStart 成員中信任項的完整 SID,以及之後的連續記憶體。 此外,應用程式必須明確設定 Header.AceTypeHeader.AceSize 成員的值。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winnt.h (包括 Windows.h)

另請參閱

ACE

ACL

AddAccessAllowedObjectAce

GUID

SID