マシンのシステムアカウントで起動され、ユーザーにいくつかのダイアログを表示するac#アプリケーションがあります。通常のユーザーがログオフすると、アプリケーションも終了します。システムアカウントで実行されているので、ユーザーがログインしていなくても実行し続けると思いました。
これが発生する理由に関する情報をいただければ幸いです。
アプリケーションはサービスですか?あなたが欲しいのはサービスのようです。任意のユーザーとして任意のプロセスを実行できますが、それがサービスになるわけではないことに注意してください。プロセスがサービスとして実装されている場合、ユーザーがログインしていなくてもプロセスは実行を継続します。
ユーザーがログオフした後もアプリを実行し続けたい場合(たとえば、コンピューターが実行されている間、状態を維持するため)、サービスが必要です。ただし、サービスでUIを表示することは強くお勧めしません。長時間実行とUIの両方が必要な場合は、データを保存するサービスと、ユーザーがログインするたびに実行されるUIを表示し、サービスと対話するアプリケーションを作成することを検討してください。
これは、ユーザーセッションが終了したときのセキュリティ機能であり、ユーザーが呼び出したアプリケーションは終了します。ユーザーセッションの外部で実行するアプリケーションが必要な場合は、サービスが必要ですが、それ自体のセッションサービスでは、メッセージなどを使用してユーザーセッションに「到達」することはできません。
アプリケーションをWindowsサービスとして実行する必要があります。
アプリケーションをWindowsサービスとして作成する必要があります。アプリケーションにダイアログが表示される場合は、[サービスにデスクトップとの対話を許可する]をオンにして、ローカルシステムアカウントで実行する必要があります。
ただし、より適切なアプローチは、別のアプリケーションを使用してユーザーに表示できるWCFまたはRemotingを使用して、アプリケーションからクエリ可能なインターフェイスを公開することです。誰もログオンしていないときにアプリから通知が必要な場合は、別のWCF/Webサービス/リモーティングエンドポイントにメールを送信したりイベントを投稿したりすることを検討してください。
プロセスはexplorer.exeによって開始されたため、実行中のアカウントに関係なく、ユーザーがログオフするとプロセスは終了します。それは単にウィンドウが機能する方法です。プロセスの実行を継続できるようにするには、プロセスがサービスであるか、タスクスケジューラによって開始される必要があります。