次の方法で共有


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

セキュリティ記述子の所有者 SID へのポインターを受け取る変数へのポインターppSecurityDescriptor で返されるか、セキュリティ記述子に所有者 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 関数を呼び出して、返されたバッファーを解放します。

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

戻り値

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

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

備考

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

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

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

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

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

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

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー aclapi.h
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

ACL

アクセス制御の

基本的なアクセス制御関数の

GetSecurityInfo を する

LocalFree

特権定数の

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID の

SetNamedSecurityInfo の

SetSecurityInfo の