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 /blah
net 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.
sc start fooservice arg1 arg2 ...
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.
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"
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.
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>
InstSrv et SrvAny pourraient-ils aider à cela? Guide et liens