ローカルCOMサーバーを共通のアカウントで実行するにはどうすればよいですか(ローカルシステムが適しています)。RunAsのドキュメントは、DCOM専用のようで、ローカルでは機能しません。
私が直面している問題は、CoCreateInstanceが異なるデスクトップで実行されているプロセスから呼び出されており、このシナリオのSCMがデスクトップごとに新しいサーバーを起動したいということです。設計どおり、単一のインスタンスのみが必要です。
ローカルCOMサーバーを共通のアカウントで実行するにはどうすればよいですか(ローカルシステムが適しています)。RunAsのドキュメントは、DCOM専用のようで、ローカルでは機能しません。
私が直面している問題は、CoCreateInstanceが異なるデスクトップで実行されているプロセスから呼び出されており、このシナリオのSCMがデスクトップごとに新しいサーバーを起動したいということです。設計どおり、単一のインスタンスのみが必要です。
あなたが説明しているのはシステムサービスであり、COMサーバーではありません。COMサーバーは、「セッション0」(サービス)や単一のセッションではなく、実行するセッションで実行するように設計されています。1つのセッションでのみ実行され、他のすべてにグローバルアクセスできるものが必要な場合は、COMサーバーではなくWindowsサービスを使用する必要があります。
他の理由でCOMサーバーの側面が必要であるが、リソースをグローバルに共有したい場合、または必要な処理をすべて制御する「1つのプロセス」を使用したい場合は、COMサーバーに任意のIPC方法を使用してサービスと通信させることができます。 。
また、コメントで「コマンドラインから実行すると」と言います。コマンドラインからEXEを実行する場合は、COMサーバーとして登録されているかどうかは関係なく、他のコマンドと同じように実行されます。他のEXE/app-これは、実行しているユーザー、セッションに関係なく実行されることを意味します。EXEをCOMサーバーとして登録すると、他のプロセスがそのEXEを実行し、OLE/COMを介して通信できるようになります。 EXEは、通常のアプリとしても実行できます。たとえば、MicrosoftWordとOutlookはどちらもCOMサーバーです。つまり、outlook.exeはCOMサーバーですが、もちろん通常のアプリケーションとして実行することもできます。