web-dev-qa-db-fra.com

Comment démarrer un service avec certains paramètres de démarrage sous Windows

Comment démarrer un service avec certains paramètres? Dans ne autre question j'ai trouvé

 net start servicename blah 

mais si j'essaye, net me lance une erreur de syntaxe.

Qu'est-ce que je fais mal?

Modifier: Pour clarifier net start servicename fonctionne très bien, mais je dois transmettre des paramètres au service. Je peux le faire manuellement dans services.msc en remplissant un paramètre de démarrage avant de démarrer le service. Mais comment puis-je le faire à partir d'un script?

Une autre modification: Désolé, mais ma question était trompeuse . Dans mes tests, j'avais beaucoup plus de paramètres et ce n'est pas le /blahnet start se plaint de. En fait, tout ce qui commence par une barre oblique est très bien. Donc net start servicename /blah travaux, net start servicename blah ne fonctionne pas. Puisque j'ai besoin de net start servicename /foo bar, c'est le bar qui est le problème.

18
sbi
sc start fooservice arg1 arg2 ...
29
user1686

NET START ne vous permettra pas de passer des paramètres arbitraires pour autant que je sache (il semble qu'ils doivent être préfixés par un /), je pense que la bonne façon est de modifier la clé de registre appropriée et d'arrêter/démarrer le service. En supposant que votre service personnalisé s'appelle MyService:

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

En réalité, une meilleure façon consiste à stocker votre configuration dans un endroit connu du service, comme le registre ou le système de fichiers, et à lire toutes les valeurs dont vous avez besoin. Comme vous pouvez le voir, la personnalisation de la ligne de commande est un peu plus pénible qu'elle ne devrait l'être.

S'il s'agit par hasard d'un service développé par .NET, vous pouvez créer n copies de l'exécutable sur votre système de fichiers, et obtenir automatiquement les paramètres du fichier app.config approprié.

On dirait que vous êtes peut-être allé trop loin en dehors de la boîte Win32. Étant donné que cela ressemble à un développement personnalisé, toutes les autres solutions proposées, bien que ce ne soit peut-être pas votre idéal, fonctionneront correctement et sont un moyen plus sûr d'aller.

8
Goyuix

Vous avez besoin d'une barre oblique avant chaque paramètre lorsque vous utilisez net start. Assurez-vous également de citer les paramètres qui ont des espaces.

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
4
Even Mien

net start servicename /foo pour un seul argument

net start servicename /"foo bar" pour une chaîne ou une liste d'arguments

Note: Cette question a 8 ans mais je n'ai pas la réputation de commenter la réponse acceptée et c'est toujours un résultat Google top en 2018, donc je voulais clarifier ce qui fonctionnait maintenant en ce qui concerne aux questions édition finale.

3
MissingL_tter

Vous devez utiliser le nom de service réel tel qu'il apparaît dans le panneau de configuration, services. S'il contient des espaces, vous devez mettre des guillemets autour du nom du service.

Pour obtenir le nom réel du service, tapez simplement net start sans aucun paramètre sur l'invite de commande. Il devrait vous donner une liste de tous les services en cours d'exécution afin que vous puissiez obtenir le nom réel du service. Ensuite, utilisez simplement net start <servicename>

1
Robert Williams

InstSrv et SrvAny pourraient-ils aider à cela? Guide et liens

0
Dave M