ログオフ時になぜアプリケーションは、Windows上のシステムアカウントとして実行しているん
質問
私はマシン上のシステムアカウントで開始され、ユーザーにいくつかのダイアログを提示されたC#アプリケーションを持っています。正規のユーザーがログオフするとアプリケーションも同様に終了します。私は、そのシステムアカウントで実行されているので、それがログインしていないユーザーにもかかわらず実行し続けるだろうと思っているだろう。
これがなぜ起こるか上の任意の情報をいただければ幸いです。
解決
は、サービスを必要としています。しかし、サービスが強くUIを表示するから、落胆しています。あなたは長時間実行とUIの両方が必要な場合は、あなたのデータを格納するためのサービス、およびそのユーザがログインがUIを表示するたびに実行され、サービスと対話するアプリケーションを作成することを検討します。
他のヒント
サービスアプリケーションのですか?それはあなたがサービスで何をしたいのように聞こえます。あなたが任意のユーザとして任意のプロセスを実行できることに注意してください、それはそれのサービスがありません。あなたのプロセスがサービスとして実装されている場合は、それはログインしていないユーザーでも、引き続き実行されます。
これは、セキュリティ機能です。あなたはユーザーセッションの外部で実行するアプリケーションが必要な場合は、それが自身のセッションサービスにメッセージやなとユーザーセッション「に達する」カント以来ます。
しかし、サービスを必要としますは、Windowsサービスとしてアプリケーションを実行する必要があります。
は、Windowsサービスとしてアプリケーションを作成する必要があります。アプリケーションは、ダイアログが表示されている場合、あなたは、「デスクトップとの対話をサービスに許可」とローカルシステムアカウントの下でそれを実行をチェックする必要があります。
しかし、より良い方法は、あなたが別のアプリケーションを使用して、ユーザーに表示することができますWCFやRemotingを使用してアプリケーションからの照会可能なインターフェイスを公開することです。誰もが、その後ログオンしていないとき、あなたのアプリからの通知をしたい場合は、電子メールを送信するか、別のWCF / Webサービス/リモーティングエンドポイントにイベントを掲載を検討する必要があります。
プロセスはexplorer.exeのによって開始されたので、ユーザは関係なく、それがもとで実行しているものを占めるのログオフ時に、それが終了します。それは単にウィンドウの動作方法です。プロセスがそれを実行し続けることができるようにするには、タスクスケジューラによって開始された可能性のサービスまたはにする必要があります。