2010-11-24 12 views
1

J'essaie de transmettre des paramètres à mon service Windows, mais les args de la méthode OnStart sont toujours vides.Comment transmettre des arguments au service Windows

protected override void OnStart(string[] args) 
     { 
      System.Diagnostics.Debugger.Launch(); 
     } 

Plusieurs instances de mon service sont installées sur la même machine. Chacun devrait utiliser une config différente donc l'idée d'obtenir le nom du service et d'après cela pour lire la bonne configuration.

Répondre

1

Passez-vous les paramètres via l'applet de service? Les services ne peuvent pas accepter les arguments de ligne de commande et doivent à la place être passés via l'applet de services dans la fenêtre "gestion de l'ordinateur".

+0

Lorsque j'essaie d'ajouter dans le champ "Paramètres de démarrage", je reçois toujours des arguments vides. – UshaP

+0

Quelque chose doit être désactivé, les paramètres de démarrage se traduisent par le tableau args que vous avez mentionné. Sinon, j'ai trouvé un article sur la spécification de ces paramètres dans l'installateur: http://stackoverflow.com/questions/200163/am-i-running-as-a-service/2111492#2111492 –

0

Si vous voulez le nom du service, pourquoi ne pas simplement regarder ServiceBase.ServiceName?

protected override void OnStart(string[] args) 
{ 
    switch (this.ServiceName) 
    { 
     // .... 
    } 
} 

Vous pouvez également envisager une conception non basée sur le nom du service, qui peut être facilement modifiée dans le système.

+0

ce n'est pas bon pour moi parce que le nom du service est toujours le même. Je veux passer dans le paramètre – UshaP

+0

Alors, comment avez-vous l'intention d'avoir plusieurs services avec le même nom (que vous ne pouvez pas faire)? –

+0

Je suis d'accord que le nom de service doit être unique mais quand j'obtiens this.ServiceName il retourne toujours service1 – UshaP

0

Utilisez un fichier de paramètres (clic droit, Ajouter un élément, Paramètres) pour générer automatiquement le fichier de configuration de l'application. Ensuite, dans la corbeille pour chaque instance, vous pouvez définir les valeurs dans la configuration - SI vous les exécutez à différents emplacements.

Si plusieurs instances de service s'exécutent à partir d'un emplacement unique, l'approche du fichier de configuration ne fonctionnera pas. Dans ce cas, je recommanderais un exe régulier avec une méthode vide main(string[] args) et ensuite vous pouvez utiliser le Planificateur de tâches dans Windows pour définir les arguments et la planification.