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 |