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 |