次の方法で共有


対話型ユーザー

対話型ユーザーは、COM サーバーが実行されているコンピューターに現在ログオンしているユーザーです。 ID が対話型ユーザーに設定されている場合、サーバーがそのクラス ファクトリをマルチユースとして登録すると、すべてのクライアントはサーバーの同じインスタンスを使用します。 ユーザーがログオンしていない場合、サーバーは実行されません。 サーバーにクライアントが表示する必要があるグラフィカル ユーザー インターフェイス (GUI) がある場合は、サーバーの ID として対話型ユーザーを使用する必要があります。 ただし、サーバーはログオン ユーザーの知識や同意なしにログオン ユーザーの ID で実行されるため、この ID を選択するとセキュリティ上のリスクが伴います。 さらに、サービス アプリケーションではユーザー インターフェイスを表示できません。 詳細については、「対話型サービス」を参照してください。

COM サーバーがターミナル サービス環境で対話型ユーザーとして実行するように構成されている場合、サーバーはクライアントのユーザー ID と一致する対話型セッションで起動されます。 ただし、クライアント アプリケーションは、セッション モニカーを使用して、クライアント ID と一致しないセッションでサーバーによって提供されるオブジェクトを参照することができます。 これを使用すると、クライアント アプリケーションは任意のセッションを指定できます。この場合、サーバーは起動ユーザーではなく、セッションを所有するユーザーとして実行されます。 このシナリオの既定のアクセス許可では、起動ユーザーがサーバー上のメソッドを呼び出すことはできません。 ただし、次のセキュリティ リスクが残ります。

  • COM サーバーが、TCP ポート、名前付きパイプ、LPC ポート、共有メモリ セクションなど、COM によって制御されないインターフェイスを公開している場合、起動ユーザーはこれらを使用してサーバーに影響を与える可能性があります。 対話型ユーザーとして実行するように構成された COM オブジェクトは、この攻撃対象領域をできるだけ減らす必要があります。
  • COM オブジェクトは、独自のアクセス許可を自由に設定できます。 オブジェクトが AppID を登録するか、または CoInitializeSecurity を呼び出して起動ユーザー アクセスを許可するアクセス許可を設定した場合、ユーザーはサーバーを起動して別のユーザーとして実行し、オブジェクトにアクセスできます。

アプリケーション ID

ユーザーの起動

サービス ID

指定されたユーザー