GetKernelObjectSecurity 関数 (securitybaseapi.h)

GetKernelObjectSecurity 関数は、カーネル オブジェクトを保護するセキュリティ記述子のコピーを取得します。

構文

BOOL GetKernelObjectSecurity(
  [in]            HANDLE               Handle,
  [in]            SECURITY_INFORMATION RequestedInformation,
  [out, optional] PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]            DWORD                nLength,
  [out]           LPDWORD              lpnLengthNeeded
);

パラメーター

[in] Handle

カーネル オブジェクトへのハンドル。

[in] RequestedInformation

要求されるセキュリティ情報を識別する SECURITY_INFORMATION 値を指定します。

[out, optional] pSecurityDescriptor

関数が指定したオブジェクトのセキュリティ記述子のコピーを格納するバッファーへのポインター。 呼び出し 元プロセス には、オブジェクトのセキュリティ状態の指定された側面を表示する権限が必要です。 SECURITY_DESCRIPTOR構造体は自己相対形式で返されます。

[in] nLength

pSecurityDescriptor パラメーターが指すバッファーのサイズをバイト単位で指定します。

[out] lpnLengthNeeded

pSecurityDescriptor パラメーターによって指されるバッファーに必要なバイト数を受け取る変数へのポインター。 関数が戻るときにこの変数の値が nLength パラメーターの値より大きい場合、どのセキュリティ記述子もバッファーにコピーされます。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

カーネル オブジェクトのセキュリティ記述子から所有者、グループ、または DACL を読み取るために、呼び出し元のプロセスには、ハンドルが開かれたときにREAD_CONTROLアクセス権が付与されている必要があります。 READ_CONTROLアクセスを取得するには、呼び出し元がオブジェクトの所有者であるか、オブジェクトの DACL がアクセス権を付与する必要があります。

セキュリティ記述子から SACL を読み取るために、呼び出し元のプロセスに、ハンドルが開かれたときにアクセスACCESS_SYSTEM_SECURITY許可されている必要があります。 このアクセスを取得する適切な方法は、呼び出し元の現在のトークンでSE_SECURITY_NAME特権を有効にし、ACCESS_SYSTEM_SECURITYアクセスのハンドルを開き、特権を無効にすることです。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー securitybaseapi.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

GetFileSecurity

GetPrivateObjectSecurity

GetUserObjectSecurity

低レベルのAccess Control

低レベルのAccess Control関数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetKernelObjectSecurity