次の方法で共有


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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム ウィンドウズ
ヘッダー comsvcs.h

関連項目

ISecurityProperty