GetNamedSecurityInfoA 関数 (aclapi.h)

GetNamedSecurityInfo 関数は、名前で指定されたオブジェクトのセキュリティ記述子のコピーを取得します。

構文

DWORD GetNamedSecurityInfoA(
  [in]            LPCSTR               pObjectName,
  [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] pObjectName

セキュリティ情報の取得元となるオブジェクトの名前を指定する null で終わる文字列へのポインター。 さまざまなオブジェクトの種類の文字列形式の説明については、「 SE_OBJECT_TYPE」を参照してください。

[in] ObjectType

pObjectName パラメーターによって指定されたオブジェクトの型を示す、SE_OBJECT_TYPE列挙の値を指定します。

[in] SecurityInfo

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

[out, optional] ppsidOwner

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

[out, optional] ppsidGroup

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

[out, optional] ppDacl

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

[out, optional] ppSacl

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

[out, optional] ppSecurityDescriptor

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

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

戻り値

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

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

注釈

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

オブジェクトのセキュリティ記述子から所有者、グループ、または DACL を読み取る場合、オブジェクトの DACL は呼び出し元へのアクセスREAD_CONTROL許可する必要があります。または、呼び出し元がオブジェクトの所有者である必要があります。

オブジェクトのシステム アクセス制御リストを読み取るために、呼び出し元プロセスに対してSE_SECURITY_NAME特権を有効にする必要があります。 特権を有効にした場合のセキュリティへの影響については、「 特別な特権を使用した実行」を参照してください。

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

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

この関数はプレーンテキストで情報を転送します。 この関数によって転送される情報は、システムに対して署名がオフになっていない限り署名されますが、暗号化は実行されません。

ユーザー アカウント、グループ アカウント、またはログオン セッションを使用してオブジェクトへのアクセスを制御する方法の詳細については、「 オブジェクトへのアクセスを DACLs で制御する方法」を参照してください。

GetNamedSecurityInfo を使用する例については、「オブジェクトの ACL の変更」を参照してください。

注意

aclapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetNamedSecurityInfo を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください

ACL

アクセス制御

基本的なAccess Control関数

GetSecurityInfo

LocalFree

特権定数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo

SetSecurityInfo