CreatePrivateObjectSecurity 関数 (securitybaseapi.h)

CreatePrivateObjectSecurity 関数は、新しいプライベート オブジェクトの自己相対セキュリティ記述子を割り当てて初期化します。 保護されたサーバーは、新しいプライベート オブジェクトを作成するときにこの関数を呼び出します。

新しいオブジェクトのオブジェクト型 GUID を指定するか、 アクセス制御エントリ (ACE) の継承方法を制御するには、 CreatePrivateObjectSecurityEx 関数を使用します。

構文

BOOL CreatePrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR CreatorDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewDescriptor,
  [in]           BOOL                 IsDirectoryObject,
  [in, optional] HANDLE               Token,
  [in]           PGENERIC_MAPPING     GenericMapping
);

パラメーター

[in, optional] ParentDescriptor

新しいオブジェクトが作成される親ディレクトリの セキュリティ記述子 へのポインター。 親ディレクトリがない場合は、このパラメーターに NULL を指定できます。

[in, optional] CreatorDescriptor

オブジェクトの作成者によって提供されるセキュリティ記述子へのポインター。 オブジェクトの作成者が新しいオブジェクトのセキュリティ情報を明示的に渡さない場合、このパラメーターは NULL になります

[out] NewDescriptor

新しく割り当てられた自己相対セキュリティ記述子へのポインターを受け取る変数へのポインター。 呼び出し元は、このセキュリティ記述子を解放するために DestroyPrivateObjectSecurity 関数を呼び出す必要があります。

[in] IsDirectoryObject

新しいオブジェクトがコンテナーかどうかを指定します。 TRUE の値は、オブジェクトにディレクトリなどの他のオブジェクトが含まれていることを示します。

[in, optional] Token

オブジェクトを作成するクライアント プロセスアクセス トークンへのハンドル。 偽装 トークンの場合は、SecurityIdentification レベル以上である必要があります。 SecurityIdentification 偽装レベルの完全な説明については、 列挙型SECURITY_IMPERSONATION_LEVEL 参照してください。

クライアント トークンは、新しいオブジェクトの既定のセキュリティ情報 (既定の所有者、プライマリ グループ、 随意アクセス制御リストなど) を取得するために使用されます。 TOKEN_QUERY アクセスするには 、トークンを開く必要があります。

次の条件がすべて当てはまる場合は、TOKEN_QUERYアクセスに加えて 、TOKEN_DUPLICATE アクセスのためにハンドル 開く必要があります。

  • トークン ハンドルは、プライマリ トークンを参照します。
  • トークンのセキュリティ記述子には、 OwnerRights SID を持つ 1 つ以上の ACE が含まれています。
  • CreatorDescriptor パラメーターにセキュリティ記述子が指定されています。
  • この関数の呼び出し元は、AutoInheritFlags パラメーターにSEF_AVOID_OWNER_RESTRICTION フラグを設定しません。

[in] GenericMapping

各汎用権限からオブジェクトの特定の権限へのマッピングを指定する GENERIC_MAPPING構造体への ポインター。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

CreatorDescriptor パラメーターで指定されたSECURITY_DESCRIPTORシステム アクセス制御リスト (SACL) が指定されている場合は、Token パラメーターにSE_SECURITY_NAME特権が有効になっている必要があります。 CreatePrivateObjectSecurity 関数は、この特権をチェックし、プロセス中に監査を生成する可能性があります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー securitybaseapi.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

クライアント/サーバー Access Control関数

クライアント/サーバー Access Controlの概要

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

GetTokenInformation

OpenProcessToken

SECURITY_DESCRIPTOR

SECURITY_IMPERSONATION_LEVEL

SetPrivateObjectSecurity