ISecurityProperty::GetDirectCallerSID メソッド (comsvcs.h)

現在実行中のメソッドを呼び出した外部プロセスのセキュリティ識別子を取得します。 この情報は、 ISecurityCallContext を使用して取得することもできます。

構文

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

パラメーター

[out] pSID

現在のメソッドが呼び出されたプロセスのセキュリティ ID への参照。

戻り値

このメソッドは、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAILの標準戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
現在のメソッドを呼び出したプロセスのセキュリティ ID は、パラメーター pSid で返されます。
CONTEXT_E_NOCONTEXT
コンポーネントがアプリケーションにインポートされていないか、COM+ CreateInstance メソッドのいずれかでオブジェクトが作成されていないため、現在のオブジェクトにはコンテキストが関連付けられません。

注釈

GetDirectCallerSID メソッドを使用して、オブジェクトの現在実行中のメソッドを呼び出したプロセスのセキュリティ ID を確認します。 プロセスの境界を越えてセキュリティが適用されます。 つまり、 GetDirectCallerSID によって返されるセキュリティ ID は、現在のオブジェクトが実行されているプロセスに呼び出されたプロセスに関連付けられているセキュリティ ID であり、必ずしもオブジェクト自体への直接の呼び出し元であるとは限りません。 オブジェクトが同じプロセス内で別のオブジェクトを呼び出す場合、2 番目のオブジェクトが GetDirectCallerSID を呼び出すと、直接呼び出されたオブジェクトのセキュリティ ID ではなく、独自のプロセス境界外の最も直接的な呼び出し元のセキュリティ ID が取得されます。

次のシナリオは、 GetDirectCallerSID メソッドの機能を示しています。

  • サーバー A で実行されている基本プロセスは、ユーザー A としてサーバー B のオブジェクト X を呼び出し、ユーザー B として実行されます。次に、Object X は Server C で実行されている Object Y を呼び出します。Object Y が GetDirectCallerSID を呼び出すと、ユーザー B のセキュリティ ID が返されます。
  • ユーザー A としてサーバー A で実行されている基本プロセスは、ユーザー B として実行されているサーバー B のオブジェクト X を呼び出します。次に、Object X はオブジェクト Y を呼び出し、サーバー B でもオブジェクト X と同じプロセスで実行されます。オブジェクト Y が GetDirectCallerSID を呼び出すと、ユーザー B のセキュリティ ID ではなく、ユーザー A のセキュリティ ID が返されます。
使用が完了したら、セキュリティ ID で ISecurityProperty::ReleaseSID を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー comsvcs.h

こちらもご覧ください

ISecurityProperty