SetPrivateObjectSecurity 関数 (securitybaseapi.h)

SetPrivateObjectSecurity 関数は、プライベート オブジェクトのセキュリティ記述子を変更します。

保護されたサーバーが アクセス制御エントリ (ACE) の自動継承をサポートするかどうかを指定するには、 SetPrivateObjectSecurityEx 関数を使用します。

構文

BOOL SetPrivateObjectSecurity(
  [in]           SECURITY_INFORMATION SecurityInformation,
  [in]           PSECURITY_DESCRIPTOR ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  [in]           PGENERIC_MAPPING     GenericMapping,
  [in, optional] HANDLE               Token
);

パラメーター

[in] SecurityInformation

設定するセキュリティ記述子の部分を示します。 この値は、SECURITY_INFORMATION ビット フラグの組み合わせです。

[in] ModificationDescriptor

SECURITY_DESCRIPTOR構造体へのポインター。 SecurityInformation パラメーターによって示されるこのセキュリティ記述子の部分は、ObjectsSecurityDescriptor セキュリティ記述子に適用されます。

[in, out] ObjectsSecurityDescriptor

SECURITY_DESCRIPTOR構造体へのポインターへのポインター。 このセキュリティ記述子は 、自己相対 形式である必要があります。 セキュリティ記述子のメモリは、HeapAlloc 関数を使用してプロセス ヒープ (GetProcessHeap) から割り当てる必要があります。

入力時に、これはプライベート オブジェクトの現在のセキュリティ記述子です。 関数は、新しいセキュリティ記述子を生成するように変更します。 必要に応じて、 SetPrivateObjectSecurity 関数は、より大きなセキュリティ記述子を生成するために追加のメモリを割り当てます。

[in] GenericMapping

各汎用アクセス権に対応する特定の標準アクセス権を指定する GENERIC_MAPPING構造体への ポインター。

[in, optional] Token

プライベート オブジェクトのセキュリティが変更されているクライアントの アクセス トークン へのハンドル。 このパラメーターは、クライアントが新しい所有者 セキュリティ識別子 (SID) の正当な値を提供していることを確認するために必要です。 TOKEN_QUERYアクセスするには、トークンを開く必要があります。

戻り値

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

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

解説

この関数は、リソース マネージャーのみが使用することを目的としています。 セキュリティ記述子を更新するための標準のアクセス制御セマンティクスを実装するには、リソース マネージャーは SetPrivateObjectSecurity を呼び出す前に、次の条件が満たされていることを確認する必要があります。

  • オブジェクトの所有者が設定されている場合、呼び出し元 のプロセス には、WRITE_OWNERアクセス許可を持っているか、オブジェクトの所有者である必要があります。
  • オブジェクトの 随意アクセス制御リスト (DACL) が設定されている場合、呼び出し元のプロセスには、WRITE_DACアクセス許可を持っているか、オブジェクトの所有者である必要があります。
  • オブジェクトの システム アクセス制御リスト (SACL) が設定されている場合は、呼び出し元プロセスに対してSE_SECURITY_NAME特権を有効にする必要があります。
上記の条件が満たされていない場合、この関数の呼び出しは失敗しません。ただし、標準アクセス ポリシーは適用されません。

クライアントには通常、基になるトークン操作に必要な適切な特権がないため、この関数を呼び出すプロセスはクライアントを偽装しないでください。

要件

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

こちらもご覧ください

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

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

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity