アウト オブ プロセスで実行されるベンダーの COM オートメーション サーバーと対話する必要があるマネージ コードを作成しています。複数のクライアントが接続すると、このサーバーが不安定になることがわかりました。たとえば、プロセス A のマネージ コードとプロセス B のマネージ コードの両方がこの COM サーバーに接続している場合、COM サーバーに対して単一のプロセスが起動され、その動作は信頼性に欠けます。 クライアントとサーバーの接続ごとに個別のプロセスを強制する方法があることを願っています。理想的には、次のようになりたいと思います。
管理対象プロセス A がプロセスC1
で COM サーバーと通信中
管理対象プロセス B がプロセスC2で COM サーバーと通信中
頭に浮かんだ考えの 1 つは、プロセス A とプロセス B を異なるセキュリティ ID で実行すると、COM インフラストラクチャが別のサーバー プロセスを作成する可能性があるということでした。しかし、私はむしろその道をたどりたくありません。管理対象プロセス A と管理対象プロセス B は、実際には Windows サービスです。そして、ID ローカル システムでそれらを実行しています (デスクトップと対話できるようにする必要があり、ローカルとして実行されないサービスのサービス アプレットの [デスクトップと対話する] ボックスをチェックできないためです)。システム)。そして、私がデスクトップと対話する必要がある理由は、この COM サーバーが時折画面にダイアログ ボックスを表示し、サービス自体がデスクトップと対話できない場合、COM サーバーが生成され、ダイアログを表示できないためです (私はそれが非表示の WinStation に表示されます)。