<Return[A]><Top>

AccessCheck

Declare Function Api_AccessCheck& Lib "advapi32" Alias "AccessCheck" (SecDescriptor As SECURITY_DESCRIPTOR, ByVal ClientToken&, ByVal DesiredAccess&, GenericMapping As GENERIC_MAPPING, PriviSet As PRIVILEGE_SET, PriviSetLength&, GranAccess&, ByVal Status&)

Declare Function AccessCheck Lib "advapi32" Alias "AccessCheck" (pSecurityDescriptor As SECURITY_DESCRIPTOR, ByVal ClientToken As Long, ByVal DesiredAccess As Long, GenericMapping As GENERIC_MAPPING, PrivilegeSet As PRIVILEGE_SET, PrivilegeSetLength As Long, GrantedAccess As Long, ByVal Status As Long) As Long

アクセス トークンによって識別されたクライアントに対して、指定されたアクセス権利セットを、セキュリティ記述子が許可しているかどうかを調べる。通常、サーバーアプリケーションはこの関数を使って、プライベートオブジェクトへのアクセスを確認する。

パラメータ

pSecurityDescriptor
    アクセスの確認に使う SECURITY_DESCRIPTOR 構造体へのポインタを指定する。
ClientToken
    アクセスの取得を試みているクライアントを表す、偽装トークンのハンドルを指定する。このハンドルは、トークンに対する TOKEN_QUERY

    アクセス権を備えていなければならない。さもないと、この関数は失敗し、ERROR_ACCESS_DENIED を返す。
DesiredAccess
    確認したいアクセス権を指定するアクセスマスクを指定する。汎用のアクセス権を含まないよう、MapGenericMask 関数を使ってこのマスク

    をマップしておかなければならない。
    このパラメータに MAXIMUM_ALLOWED を指定すると、GrantedAccess アクセスマスクを設定し、セキュリティ記述子がクライアントに最

    大のアクセス権を認めていることになる。
GenericMapping
    アクセスを確認したいオブジェクトに関連付けられている GENERIC_MAPPING 構造体へのポインタを指定する。
PrivilegeSet
    アクセス検証に使われる特権を受け取る PRIVILEGE_SET 構造体へのポインタを指定する。どの特権も使われていなかった場合、

    PrivilegeCount メンバは 0 に設定される。
PrivilegeSetLength
    PrivilegeSet パラメータが指すバッファのサイズを、バイト単位で指定する。
GrantedAccess
    許可されたアクセス権利を受け取るアクセスマスクへのポインタを指定する。AccessStatus が FALSE を返した場合、この関数はアクセスマ

    スクを 0 に設定する。この関数が失敗した場合、アクセスマスクを設定しない。
AccessStatus
    アクセス確認の結果を受け取る変数へのポインタを指定する。セキュリティ記述子が、アクセストークンによって識別されているクライアントに

    対して、要求されたアクセス権を許可している場合は、AccessStatus は TRUE を返す。それ以外の場合、AccessStatus は FALSE を返

    すが、GetLastError 関数を使って拡張エラー情報を取得できる。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    AccessCheck 関数は、指定されたセキュリティ記述子と指定されたアクセストークンを比較し、AccessStatus パラメータを使ってアクセスが許

    可されるか拒否されるかを示す。アクセスが許可される場合、要求したアクセスマスクがそのオブジェクトの許可済みアクセスマスクになる。
    セキュリティ記述子の DACL(随意アクセス制御リスト)が NULL の場合、AccessStatus パラメータは TRUE を返し、クライアントが要求さ

    れるアクセス権を備えていることを示す。
    セキュリティ記述子がオーナー SID(セキュリティ ID)とグループ SID の一方、または両方を保持していない場合、AccessCheck 関数は失

    敗し、ERROR_INVALID_SECURITY_DESCR を返す。