<Return[G]><Top>

GetSecurityInfo

Declare Function Api_GetSecurityInfo& Lib "advapi32" Alias "GetSecurityInfo" (ByVal Hand&, ByRef Type As SE_OBJECT_TYPE, ByVal Info&, ByRef Owner As Sid, ByRef Group As Sid, ByRef Dacl As pAcl, ByRef Sacl As pAcl, ByRef Descriptor As SECURITY_DESCRIPTOR)

Declare Function GetSecurityInfo Lib "advapi32" Alias "GetSecurityInfo" (ByVal Handle As Long, ByRef ObjectType As SE_OBJECT_TYPE, ByVal SecurityInfo As Long, ByRef ppsidOwner As Sid, ByRef ppsidGroup As Sid, ByRef ppDacl As pAcl, ByRef ppSacl As pAcl, ByRef ppSecurityDescriptor As SECURITY_DESCRIPTOR) As Long

画面のデザインに使われている、表示要素の色を取得する。表示要素とは、ウィンドウの一部、またはシステムが表示する画面の一部を意味する。

パラメータ
handle
    セキュリティ情報を取得するオブジェクトのハンドルを指定する。
ObjectType
    pObjectName パラメータが指定するオブジェクトのタイプを示すために、 列挙型のいずれかの値を指定する。
SecurityInfo
    取得するセキュリティ情報のタイプを示す、一連の ビットフラグをセットする。

    このパラメータには、次の値を任意に組み合わせて指定することができる。

    値                                                          

意味                                                                                                                      

    OWNER_SECURITY_INFORMATION

 

このフラグがセットされている場合、ppsidOwner パラメータは、オブジェクトの所有者を示すセキュリティ識別子を受け取る。

    GROUP_SECURITY_INFORMATION

 

 

このフラグがセットされている場合、ppsidGroup パラメータは、オブジェクトのプライマリグループを示す SID を受け取る。
DACL_SECURITY_INFORMATION このフラグがセットされている場合、ppDacl パラメータは、オブジェクトの DACL(随意アクセス制御リスト)を受け取る。

    SACL_SECURITY_INFORMATION

 

このフラグがセットされている場合、ppSacl パラメータは、オブジェクトの SACL(システムアクセス制御リスト)を受け取る。

ppsidOwner
    ppSecurityDescriptor 内に返されたセキュリティ記述子内の所有者 SID へのポインタを受け取る、変数へのポインタを指定する。

    OWNER_SECURITY_INFORMATION フラグをセットしていた場合にのみ、返されたポインタは有効である。所有者 SID が必要ない場

    合、このパラメータは NULL でもかまわない。
ppsidGroup
    返されたセキュリティ記述子内のプライマリグループ SID へのポインタを受け取る、変数へのポインタを指定する。

    GROUP_SECURITY_INFORMATION フラグをセットしていた場合にのみ、返されたポインタは有効である。グループ SID が必要ない場

    合、このパラメータは NULL でもかまわない。
ppDacl
    返されたセキュリティ記述子内の DACL へのポインタを受け取る、変数へのポインタを指定する。DACL_SECURITY_INFORMATION フ

    ラグをセットしていた場合にのみ、返されたポインタは有効である。DACL が必要ない場合、このパラメータは NULL でもかまわない。
ppSacl
    返されたセキュリティ記述子内の SACL へのポインタを受け取る、変数へのポインタを指定する。SACL_SECURITY_INFORMATION フ

    ラグをセットしていた場合にのみ、返されたポインタは有効である。SACL が必要ない場合、このパラメータは NULL でもかまわない。
ppSecurityDescriptor
    オブジェクトのセキュリティ記述子へのポインタを受け取る、変数へのポインタを指定する。 関数を呼び出して、返されたバッファを解放する

    必要がある。


戻り値
    関数が成功すると、ERROR_SUCCESS が返る。
    関数が失敗すると、WINERROR.H 内で定義されている 0 以外のエラーコードが返る。

解説
    パラメータ ppsidOwner、ppsidGroup、ppDacl、ppSacl が NULL ではなく、SecurityInfo パラメータがオブジェクトからこれらを取得するよ

    う指示している場合、これらのパラメータは ppSecurityDescriptor 内に返されたセキュリティ記述子の中の、対応するパラメータを指す。
    オブジェクトのセキュリティ記述子から所有者、グループ、DACL のいずれかを読み取るには、呼び出し側のプロセスはハンドルを開く際に

    READ_CONTROL アクセス権を許可されていなければならない。READ_CONTROL アクセス権を取得するには、呼び出し側がオブジェク

    トの所有者であるか、オブジェクトの DACL がこのアクセス権を許可していなければならない。
    セキュリティ記述子から SACL を読み取るには、呼び出し側のプロセスはハンドルを開く際に ACCESS_SYSTEM_SECURITY アクセス権を

    許可されていなければならない。このアクセス権を取得する適切な方法は、呼び出し側の現在のトークン内で SE_SECURITY_NAME 特

    権を有効にし、ACCESS_SYSTEM_SECURITY アクセスを行うハンドルを開き、最後にこの特権を無効にすることである。