GetSecurityInfo 関数 (aclapi.h)

GetSecurityInfo 関数は、ハンドルによって指定されたオブジェクトのセキュリティ記述子のコピーを取得します。

構文

DWORD GetSecurityInfo(
  [in]            HANDLE               handle,
  [in]            SE_OBJECT_TYPE       ObjectType,
  [in]            SECURITY_INFORMATION SecurityInfo,
  [out, optional] PSID                 *ppsidOwner,
  [out, optional] PSID                 *ppsidGroup,
  [out, optional] PACL                 *ppDacl,
  [out, optional] PACL                 *ppSacl,
  [out, optional] PSECURITY_DESCRIPTOR *ppSecurityDescriptor
);

パラメーター

[in] handle

セキュリティ情報を取得するオブジェクトへのハンドル。

[in] ObjectType

オブジェクトの 種類を示す列挙値をSE_OBJECT_TYPEします。

[in] SecurityInfo

取得するセキュリティ情報の種類を示すビット フラグのセット。 このパラメーターには、 SECURITY_INFORMATION ビット フラグの組み合わせを指定できます。

[out, optional] ppsidOwner

ppSecurityDescriptor で返されるセキュリティ記述子の所有者 SID へのポインターを受け取る変数へのポインター。 返されるポインターは、OWNER_SECURITY_INFORMATION フラグを設定した場合にのみ有効です。 所有者 SID が必要ない場合、このパラメーターは NULL にすることができます。

[out, optional] ppsidGroup

返された セキュリティ記述子のプライマリ グループ SID へのポインターを受け取る変数へのポインター。 返されるポインターは、GROUP_SECURITY_INFORMATION フラグを設定した場合にのみ有効です。 グループ SID が必要ない場合は、このパラメーターを NULL にすることができます。

[out, optional] ppDacl

返されたセキュリティ記述子で DACL へのポインターを受け取る変数へのポインター。 返されるポインターは、DACL_SECURITY_INFORMATION フラグを設定した場合にのみ有効です。 DACL が不要な場合、このパラメーターは NULL にすることができます。

[out, optional] ppSacl

返されたセキュリティ記述子の SACL へのポインターを受け取る変数へのポインター。 返されるポインターは、SACL_SECURITY_INFORMATION フラグを設定した場合にのみ有効です。 SACL が不要な場合、このパラメーターは NULL にすることができます。

[out, optional] ppSecurityDescriptor

オブジェクトのセキュリティ記述子へのポインターを受け取る変数へのポインター。 ポインターの使用が完了したら、 LocalFree 関数を呼び出して、返されたバッファーを解放します。

このパラメーターは、ppsidOwner、ppsidGroupppDacl、または ppSacl のいずれかのパラメーターが NULL でない場合に必要です。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS です。

関数が失敗した場合、戻り値は WinError.h で定義されている 0 以外のエラー コードです。

注釈

ppsidOwnerppsidGroupppDacl、および ppSacl パラメーターが NULL 以外であり、SecurityInfo パラメーターがオブジェクトから取得されることを指定した場合、これらのパラメーターは ppSecurityDescriptor で返されるセキュリティ記述子の対応するパラメーターを指します。

オブジェクトのセキュリティ記述子から所有者、グループ、または DACL を読み取る場合、呼び出し元のプロセスには、ハンドルが開かれたときにREAD_CONTROLアクセス権が付与されている必要があります。 READ_CONTROLアクセスを取得するには、呼び出し元がオブジェクトの所有者であるか、オブジェクトの DACL がアクセス権を付与する必要があります。

セキュリティ記述子から SACL を読み取る場合、呼び出し元のプロセスには、ハンドルが開かれたときにACCESS_SYSTEM_SECURITYアクセス権が付与されている必要があります。 このアクセスを取得する適切な方法は、呼び出し元の現在のトークンでSE_SECURITY_NAME特権を有効にし、ACCESS_SYSTEM_SECURITYアクセスのハンドルを開き、特権を無効にすることです。 特権を有効にした場合のセキュリティへの影響については、「 特別な特権を使用した実行」を参照してください。

GetSecurityInfo 関数は、次の種類のオブジェクトと共に使用できます。

  • NTFS ファイル システム上のローカル ファイルまたはリモート ファイルまたはディレクトリ
  • 名前付きパイプ
  • ローカル プリンターまたはリモート プリンター
  • ローカルまたはリモートの Windows サービス
  • ネットワーク共有
  • レジストリ キー
  • セマフォ、イベント、ミューテックス、および待機可能タイマー
  • プロセス、スレッド、ジョブ、およびファイル マッピング オブジェクト
  • 対話型サービス ウィンドウ ステーションとデスクトップ
  • ディレクトリ サービス オブジェクト
この関数は競合状態を処理しません。 スレッドがオブジェクトのセキュリティ記述子を変更するおおよその時点でこの関数を呼び出すと、この関数は失敗する可能性があります。

この関数を使用する例については、「 ファイル オブジェクトの所有者の検索」を参照してください。

要件

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

こちらもご覧ください

ACL

アクセス制御の概要

基本的なAccess Control関数

GetNamedSecurityInfo

LocalFree

特権定数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo

SetSecurityInfo