SetUserObjectSecurity 関数 (winuser.h)

SetUserObjectSecurity 関数は、ユーザー オブジェクトのセキュリティを設定します。 たとえば、ウィンドウや DDE 会話などです。

構文

BOOL SetUserObjectSecurity(
  [in] HANDLE                hObj,
  [in] PSECURITY_INFORMATION pSIRequested,
  [in] PSECURITY_DESCRIPTOR  pSID
);

パラメーター

[in] hObj

セキュリティ情報が設定されているユーザー オブジェクトへのハンドル。

[in] pSIRequested

設定する セキュリティ記述子 のコンポーネントを示す値へのポインター。 このパラメーターは、次の値と組み合わせて使用できます。

値 意味
DACL_SECURITY_INFORMATION
オブジェクトの 随意アクセス制御リスト (DACL) を設定します。 hObj で指定されたハンドルは、WRITE_DACアクセス権を持っているか、呼び出し元のプロセスが オブジェクトの所有者である必要があります。
GROUP_SECURITY_INFORMATION
オブジェクトのプライマリ グループ セキュリティ識別子 (SID) を設定します。
OWNER_SECURITY_INFORMATION
オブジェクトの所有者の SID を設定します。 hObj で指定されたハンドルは、WRITE_OWNERアクセス権を持っているか、呼び出し元のプロセスがオブジェクトの所有者であるか、SE_TAKE_OWNERSHIP_NAME特権が有効になっている必要があります。
SACL_SECURITY_INFORMATION
オブジェクトの システム アクセス制御リスト (SACL) を設定します。 hObj で指定されたハンドルには、ACCESS_SYSTEM_SECURITYアクセス権が必要です。

ACCESS_SYSTEM_SECURITY アクセス権を取得するには

  1. 呼び出し元の現在のアクセス トークンでSE_SECURITY_NAME特権を有効にします。
  2. ACCESS_SYSTEM_SECURITY アクセスのハンドルを開きます。
  3. 特権を無効にします。

[in] pSID

新しいセキュリティ情報を含む SECURITY_DESCRIPTOR 構造体へのポインター。

このバッファーは、4 バイト境界に配置する必要があります。

戻り値

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

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

解説

SetUserObjectSecurity 関数は、セキュリティ記述子で指定された変更を、ユーザー オブジェクトに割り当てられたセキュリティ記述子に適用します。 オブジェクトのセキュリティ記述子は、 自己相対 形式である必要があります。 必要に応じて、この関数は、セキュリティ記述子のサイズを大きくするために追加のメモリを割り当てます。

例

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

要件

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

こちらもご覧ください

GetUserObjectSecurity

低レベルのAccess Control

低レベルのAccess Control関数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurity