GetUserObjectSecurity 関数 (winuser.h)

GetUserObjectSecurity 関数は、指定したユーザー オブジェクトのセキュリティ情報を取得します。

構文

BOOL GetUserObjectSecurity(
  [in]                HANDLE                hObj,
  [in]                PSECURITY_INFORMATION pSIRequested,
  [in, out, optional] PSECURITY_DESCRIPTOR  pSID,
  [in]                DWORD                 nLength,
  [out]               LPDWORD               lpnLengthNeeded
);

パラメーター

[in] hObj

セキュリティ情報を返すユーザー オブジェクトへのハンドル。

[in] pSIRequested

要求されるセキュリティ情報を指定する SECURITY_INFORMATION 値へのポインター。

[in, out, optional] pSID

関数が戻るときに要求された情報を含む自己相対形式のSECURITY_DESCRIPTOR構造体へのポインター。 このバッファーは、4 バイト境界に配置する必要があります。

[in] nLength

pSD パラメーターが指すバッファーの長さ (バイト単位)。

[out] lpnLengthNeeded

完全な セキュリティ記述子を格納するために必要なバイト数を受け取る変数へのポインター。 関数が戻るときにこの変数の値が nLength パラメーターの値より大きい場合、関数は FALSE を 返し、セキュリティ記述子のいずれもバッファーにコピーされません。 それ以外の場合は、セキュリティ記述子全体がコピーされます。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

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

解説

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

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

この関数を使用する例については、「 対話型クライアント プロセスの開始」を参照してください。

要件

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

こちらもご覧ください

CreatePrivateObjectSecurity

GetKernelObjectSecurity

GetPrivateObjectSecurity

低レベルのAccess Control

低レベルのAccess Control関数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetUserObjectSecurity