次の方法で共有


GetPrivateObjectSecurity 関数 (securitybaseapi.h)

GetPrivateObjectSecurity 関数は、プライベート オブジェクトのセキュリティ記述子から情報を取得します。

構文

BOOL GetPrivateObjectSecurity(
  [in]            PSECURITY_DESCRIPTOR ObjectDescriptor,
  [in]            SECURITY_INFORMATION SecurityInformation,
  [out, optional] PSECURITY_DESCRIPTOR ResultantDescriptor,
  [in]            DWORD                DescriptorLength,
  [out]           PDWORD               ReturnLength
);

パラメーター

[in] ObjectDescriptor

SECURITY_DESCRIPTOR構造体へのポインター。 これは、クエリを実行するセキュリティ記述子です。

[in] SecurityInformation

セキュリティ記述子の取得する部分を指定するビット フラグのセット。 このパラメーターには、 SECURITY_INFORMATION ビット フラグの組み合わせを指定できます。

[out, optional] ResultantDescriptor

指定したセキュリティ記述子から要求された情報のコピーを受け取るバッファーへのポインター。 SECURITY_DESCRIPTOR構造体は自己相対形式で返されます。

[in] DescriptorLength

ResultantDescriptor パラメーターが指すバッファーのサイズをバイト単位で指定します。

[out] ReturnLength

記述子が正常にコピーされた場合、関数が 0 に設定する変数へのポインター。 バッファーがセキュリティ記述子に対して小さすぎる場合、この変数は必要なバイト数を受け取ります。 関数が戻るときに、この変数の値が DescriptorLength パラメーターの値より大きい場合、関数は FALSE を 返し、セキュリティ記述子のいずれもバッファーにコピーされません。

戻り値

関数が成功すると、戻り値は 0 以外になります。

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

解説

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

  • オブジェクトの所有者が設定されている場合、呼び出し 元のプロセス には、WRITE_OWNERアクセス許可またはオブジェクトの所有者である必要があります。
  • オブジェクトの 随意アクセス制御リスト が設定されている場合、呼び出し元のプロセスには、WRITE_DACアクセス許可またはオブジェクトの所有者である必要があります。
  • オブジェクトの システム アクセス制御リスト が設定されている場合は、呼び出し元プロセスに対して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

GetFileSecurity

GetKernelObjectSecurity

GetUserObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetPrivateObjectSecurity