ACCESS_ALLOWED_OBJECT_ACE 構造体 (winnt.h)

ACCESS_ALLOWED_OBJECT_ACE構造体は、オブジェクト、プロパティ セット、またはプロパティへのアクセスを許可するアクセス制御エントリ (ACE) を定義します。 ACE には、アクセス権のセット、オブジェクトの種類を識別する GUID、およびシステムがアクセスを許可するトラスティを識別するセキュリティ識別子 (SID) が含まれています。 ACE には、 GUID と、子オブジェクトによる ACE の継承を制御するフラグのセットも含まれています。

構文

typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
  ACE_HEADER  Header;
  ACCESS_MASK Mask;
  DWORD       Flags;
  GUID        ObjectType;
  GUID        InheritedObjectType;
  DWORD       SidStart;
} ACCESS_ALLOWED_OBJECT_ACE, *PACCESS_ALLOWED_OBJECT_ACE;

メンバー

Header

ACE の サイズと種類を指定する構造体をACE_HEADERします。 また、子オブジェクトによる ACE の継承を制御するフラグも含まれています。 ACE_HEADER構造体の AceType メンバーをACCESS_ALLOWED_OBJECT_ACE_TYPEに設定し、AceSize メンバーをACCESS_ALLOWED_OBJECT_ACE構造体に割り当てられた合計バイト数に設定する必要があります。

Mask

システムトラスティに対して許可するアクセス権を指定するACCESS_MASK。

Flags

ObjectType メンバーと InheritedObjectType メンバーが存在するかどうかを示すビット フラグのセット。 このパラメーターには、次の 1 つ以上の値を指定できます。

意味
0
ObjectTypeInheritedObjectType も存在しません。 SidStart メンバーは、Flags メンバーの直後に続きます。
ACE_OBJECT_TYPE_PRESENT
ObjectType が存在し、 GUID が含まれています。

この値を指定しない場合、 InheritedObjectType メンバーは Flags メンバーの直後に続きます。

ACE_INHERITED_OBJECT_TYPE_PRESENT
InheritedObjectType が存在し、 GUID が含まれています。

この値を指定しない場合、すべての種類の子オブジェクトが ACE を継承できます。

ObjectType

このメンバーは、ACE_OBJECT_TYPE_PRESENT ビットが Flags メンバーに設定されている場合にのみ存在します。 それ以外の場合、 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

このメンバーは、ACE_INHERITED_OBJECT_TYPE_PRESENT ビットが Flags メンバーに設定されている場合にのみ存在します。

このメンバーが存在する場合は、ACE を継承できる子オブジェクトの種類を識別する GUID 構造体です。 継承は、 ACE_HEADERの継承フラグと、子オブジェクトに配置された継承に対する保護によっても制御されます。

このメンバーのオフセットは異なる場合があります。 Flags メンバーにACE_OBJECT_TYPE_PRESENT フラグが含まれていない場合、InheritedObjectType メンバーは ObjectType メンバーによって指定されたオフセットから開始されます。

SidStart

アクセス権が付与されているトラスティを識別する SID の最初の DWORD を指定します。 SID の残りのバイトは、 SidStart メンバーの後の連続したメモリに格納されます。 この SID には、アプリケーション データを追加できます。

このメンバーのオフセットは異なる場合があります。 Flags メンバーが 0 の場合、SidStart メンバーは ObjectType メンバーで指定されたオフセットから開始されます。 Flags に含まれるフラグが 1 つだけ (ACE_OBJECT_TYPE_PRESENTまたはACE_INHERITED_OBJECT_TYPE_PRESENT) の場合、SidStart メンバーは InheritedObjectType メンバーで指定されたオフセットから開始されます。

注釈

ObjectType GUID も InheritedObjectTypeGUID も指定されていない場合、ACCESS_ALLOWED_OBJECT_ACE構造体のセマンティクスは、ACCESS_ALLOWED_ACE構造体で使用されるものと同じです。 その場合は、 ACCESS_ALLOWED_ACE 構造を使用します。これは、より小さく効率的であるためです。

ACCESS_ALLOWED_OBJECT_ACEを含む ACL では、ACL ヘッダーにACL_REVISION_DSリビジョン番号を指定する必要があります。

Mask メンバーによって指定されたアクセス権は、SidStart メンバーに格納されている SID と一致する有効な SID を所有するすべてのトラスティに付与されます。

ACCESS_ALLOWED_OBJECT_ACE構造体は、AddAccessAllowedObjectAce 関数の呼び出しによってアクセス制御リスト (ACL) に作成できます。 この関数を使用すると、 ObjectType メンバーと InheritedObjectType メンバーの GUID 構造体を格納するために必要なメモリの量 (一方または両方が存在する場合)、およびトラスティの SID に対応するために必要なメモリが自動的に割り当てられます。 さらに、 Header.AceType メンバーと Header.AceSize メンバーの値は自動的に設定されます。 ACCESS_ALLOWED_OBJECT_ACE構造体が ACL の外部で作成される場合は、ObjectType メンバーと InheritedObjectType メンバーの GUID 構造体に対応するために十分なメモリを割り当てる必要があります (一方または両方が存在する場合)。また、SidStart メンバー内のトラスティの完全な SID とそれに続く連続するメモリに対応する必要があります。 また、 Header.AceType メンバーと Header.AceSize メンバーの値は、アプリケーションで明示的に設定する必要があります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winnt.h (Windows.h を含む)

こちらもご覧ください

エース

ACL

AddAccessAllowedObjectAce

GUID

SID