C # – Services comment définir les parameters de démarrage

Je travaille actuellement sur un service Windows (qui commence donc c’est une bonne chose). La grande question est de savoir comment puis-je obtenir des parameters dans le champ paramètre de démarrage (sans le faire manuellement).

Donc, ce que j’aimerais voir, c’est ce qui suit. Lors de l’installation du service, j’aimerais que cela se produise.

Les services sont installés et les parameters de démarrage sont définis.

Comment ferait-on une telle chose (déjà parcouru StackOverflow mais il ne correspond pas à ce que je veux)

entrer la description de l'image ici

La raison pour laquelle je pose la question est la suivante: le service fait partie d’une couche de communication entre l’interface graphique et un backend de réception. Si l’emplacement principal diffère (par exemple, une autre adresse IP), le service doit avoir la nouvelle adresse en conséquence.

Si vous souhaitez avoir plus d’informations, merci de vous renseigner (ne laissez pas tomber le message si quelque chose n’est pas en ordre, demandez simplement :))

Merci d’avance

Après la mise à jour de votre question, je comprends ce que vous essayez d’accomplir. Autant que je sache actuellement, il n’est pas possible de définir ces parameters de démarrage sans utiliser le registre. Vous devrez le faire manuellement depuis la console des services ou en utilisant un installateur. Lorsque vous regardez la page MSDN couvrant ServiceBase.OnStart ( méthode MSDN ServiceBase.OnStart ), elle indique clairement:

Traiter les arguments d’initialisation pour le service dans la méthode OnStart, pas dans la méthode Main. Les arguments du tableau de parameters args peuvent être définis manuellement dans la fenêtre des propriétés du service dans la console Services. Les arguments entrés dans la console ne sont pas enregistrés; ils sont transmis au service une fois lorsque le service est démarré à partir du panneau de commande. Les arguments devant être présents au démarrage automatique du service peuvent être placés dans la valeur de chaîne ImagePath pour la clé de registre du service (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \). Vous pouvez obtenir les arguments du registre à l’aide de la méthode GetCommandLineArgs, par exemple: ssortingng [] imagePathArgs = Environment.GetCommandLineArgs ();

Le problème est que vous devrez toujours garder une trace de ces parameters de registre lors de la suppression du service. Par conséquent, le lien fourni ici ( “Est-ce que je cours en tant que service” ) pourrait également aider.

utilisez sc.exe :

 c:\>sc config  binPath="\path\to\myservice.exe -param -param" 

Dans votre OnStart() ou votre thread de service, utilisez quelque chose comme:

 ssortingng myArg = ConfigurationManager.AppSettings["MyArg"] 

où dans votre App.Config vous avez ajouté