RegGetKeySecurity

指定した開かれているレジストリキーを保護しているセキュリティ記述子のコピーを取得する。

RegGetKeySecurity hKey, SecurityInformation, pSecurityDescriptor, lpcbSecurityDescriptor

hKey : [intptr] セキュリティ記述子を取得する対象の、開かれているキーへのハンドル。
SecurityInformation : [int] 要求するセキュリティ情報を示す SECURITY_INFORMATION 値。
pSecurityDescriptor : [int] 要求したセキュリティ記述子のコピーを受け取るバッファへのポインタ。
lpcbSecurityDescriptor : [var] pSecurityDescriptor パラメータが指すバッファのサイズ(バイト単位)を指定する変数へのポインタ。関数が復帰するとき、この変数はバッファに書き込まれたバイト数を格納する。

(プラグイン / モジュール : advapi32.dll)

解説

指定した開かれているレジストリキーを保護しているセキュリティ記述子のコピーを取得する。

[戻り値]
関数が成功した場合、関数は ERROR_SUCCESS を返す。
関数が失敗した場合、WinError.h で定義された 0 以外のエラーコードを返す。FormatMessage 関数に
FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して呼び出すと、エラーの一般的な説明を取得できる。

[備考]
pSecurityDescriptor パラメータで指定されたバッファが小さすぎる場合、関数は
ERROR_INSUFFICIENT_BUFFER を返し、lpcbSecurityDescriptor
パラメータには要求したセキュリティ記述子に必要なバイト数が格納される。キーのセキュリティ記述子から所有者、グループ、任意アクセス制御リスト
(DACL) を読み取るには、ハンドルを開く際に呼び出し側プロセスに READ_CONTROL
アクセスが付与されている必要がある。READ_CONTROL アクセスを取得するには、呼び出し側がキーの所有者であるか、キーの DACL
がそのアクセスを許可している必要がある。セキュリティ記述子からシステムアクセス制御リスト (SACL)
を読み取るには、キーを開く際に呼び出し側プロセスに ACCESS_SYSTEM_SECURITY
アクセスが付与されている必要がある。このアクセスを取得する正しい方法は、呼び出し側の現在のトークンで SE_SECURITY_NAME
特権を有効にし、ACCESS_SYSTEM_SECURITY アクセスでハンドルを開き、その後特権を無効にすることである。

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs