2009-03-17 6 views
7

J'ai un service Windows qui fonctionne en arrière-plan lorsque le PC démarre. Je veux afficher une icône sur la barre d'état système pour permettre la configuration après qu'un utilisateur se soit connecté mais ne trouve pas comment faire cela.Comment puis-je faire afficher mon service Windows dans la barre d'état système?

Y at-il un événement que je devrais rechercher qui me dit qu'un utilisateur s'est connecté? Si j'ai bien compris, les services Windows ne peuvent pas avoir d'interface utilisateur, dois-je donc démarrer une application pour afficher l'icône de la barre système? Comment puis-je transmettre des mises à jour de configuration à mon service?

Répondre

11

Vous aurez besoin d'une application "agent" séparée pour cela. Un service Windows est global, s'exécutant au niveau du système. Il peut y avoir plusieurs postes de travail fonctionnant sur le système en même temps, alors qu'il est possible d'interagir avec la couche de bureau, il est loin d'être trivial d'interagir avec le "bureau des utilisateurs" de la même manière qu'avec une application déjà lié à un environnement de connexion/bureau spécifique. Il existe également des risques de sécurité liés à la présence d'un tunnel de service dans l'environnement de bureau (il ouvre un chemin vers un compte système à moins que le service ne soit plus restreint), ce qui explique pourquoi l'interaction avec le bureau est désactivée. défaut.

+3

C'est la bonne réponse. Un canal nommé fournit un bon moyen pour le service de communiquer avec l'agent de la barre d'état système. MAIS: s'il vous plaît considérer si votre service est vraiment super-génial [http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx] pour mériter sa propre icône dans la barre d'état système. –

2

Je voudrais créer une deuxième application qui fonctionne et se affiche dans la barre d'état système lorsque l'utilisateur se connecte à.

Vous pouvez ouvrir Remoting au service Windows, et de transmettre les mises à jour de configuration grâce à des méthodes exposées à partir de l'application dans la barre d'état système.

5

Vous aurez besoin d'une application distincte pour afficher l'icône de la barre d'état système. Vous pouvez communiquer avec votre service soit via WCF en laissant le service héberger un service WCF ou par ServiceController.

2

En fait, je ne pense pas que vous pouvez montrer un service dans la barre d'état système. Les applications faisant cela utilisent toujours un agent ou un autre outil de gestion.

La plupart du temps, l'application qui s'exécute dans le bac est une très petite application donnant accès aux paramètres du service.

Les options de configuration peuvent être stockées dans le registre, le fichier ini ou toute autre option de stockage. Une fois la configuration modifiée, tout ce que vous devez faire est de vous assurer de redémarrer votre service, afin qu'il puisse recharger ses nouveaux paramètres.

Questions connexes