2009-03-17 4 views
7

PCの起動時にバックグラウンドで実行されるWindowsサービスがあります。私は、システムトレイにアイコンを表示して、ユーザーがログインした後に設定できるようにしたいが、これを行う方法が見つからない。Windowsサービスをシステムトレイに表示するにはどうすればよいですか?

ユーザーがログインしたことを通知するイベントがありますか?

私はWindowsサービスがUIを持つことはできないと理解しているので、sysトレイアイコンを表示するにはアプリを起動する必要がありますか?私のサービスに設定の更新を渡すにはどうすればいいですか?

答えて

11

これには別の「エージェント」アプリケーションが必要です。 Windowsサービスはグローバルで、システムレベルで実行されます。システム上で複数のデスクトップを同時に実行することができます。そのため、サービスがデスクトップレイヤとやり取りできるようにする方法はありますが、アプリケーションと同じ方法で「ユーザーデスクトップ」とやりとりすることは自明ではありません特定のログイン/デスクトップ環境に既にバインドされています。

デスクトップ環境へのサービストンネル(セキュリティが制限されていない限り、システムアカウントへの経路を開く)に伴うセキュリティ上のリスクもあります。これは、デスクトップとの対話がデフォルト。

+3

これは正解です。名前付きパイプは、サービスがシステムトレイエージェントと通信するための良い方法を提供します。しかし、あなたのサービスが本当にすごく素晴らしいかどうかを検討してください。[http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx]システムトレイに自分のアイコンが表示されます。 –

2

私が実行されたときにユーザーがログインするシステムトレイに自分自身を表示する第2のアプリケーションを作成します。

は、Windowsサービスにリモートを開き、中のアプリから公開されたメソッドによって設定の更新を渡すことができますシステムトレイ。

5

トレイアイコンを表示するには、別のアプリケーションが必要です。 WCFを介してWCFサービスをホストするか、またはServiceControllerを通じてサービスをホストすることができます。

2

実際には、システムトレイにサービスを表示することはできません。これを行うアプリケーションは、常にエージェントまたは他のmangementツールを使用しています。

ほとんどの場合、トレイで実行されているアプリケーションは、サービスの設定にアクセスする非常に小さなアプリケーションです。

設定オプションは、レジストリ、iniファイル、またはその他のストレージオプションに格納できます。設定を変更したら、サービスを再起動して新しい設定を再ロードできるようにするだけです。

関連する問題