RegGetKeySecurity 関数 (winreg.h)
RegGetKeySecurity 関数は、指定されたオープン レジストリ キーを保護するセキュリティ記述子のコピーを取得します。
構文
LSTATUS RegGetKeySecurity(
[in] HKEY hKey,
[in] SECURITY_INFORMATION SecurityInformation,
[out, optional] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in, out] LPDWORD lpcbSecurityDescriptor
);
パラメーター
[in] hKey
セキュリティ記述子を取得するオープン キーへのハンドル。
[in] SecurityInformation
要求されたセキュリティ情報を示す SECURITY_INFORMATION 値。
[out, optional] pSecurityDescriptor
要求されたセキュリティ記述子のコピーを受け取るバッファーへのポインター。
[in, out] lpcbSecurityDescriptor
pSecurityDescriptor パラメーターによって指されるバッファーのサイズをバイト単位で指定する変数へのポインター。 関数が戻るとき、変数にはバッファーに書き込まれたバイト数が含まれます。
戻り値
関数が成功した場合、関数は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アクセスのハンドルを開き、特権を無効にすることです。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |