次の方法で共有


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

関連項目

FormatMessage

低レベルのAccess Control

低レベルのAccess Control関数

RegDeleteKey

RegOpenKeyEx

RegSetKeySecurity

SECURITY_INFORMATION