web-dev-qa-db-fra.com

Comment redémarrer le service à l'aide de l'invite de commande?

Je souhaite redémarrer le service Windows à l'aide de l'invite de commandes dans [Icons] section utilisant Inno Setup. S'il vous plaît, aidez-moi à résoudre le problème.

24
Nithin

Vous pouvez utiliser sc start [service] pour démarrer un service et sc stop [service] pour l'arrêter. Avec certains services net start [service] fait de même.

Mais si vous souhaitez l'utiliser dans le même lot, sachez que sc stop n'attendra pas l'arrêt du service. Dans ce cas, vous devez utiliser net stop [service] suivi par net start [service]. Cela sera exécuté de manière synchrone.

32
Fischermaen

Vous pouvez créer un fichier .bat avec le contenu suivant:

net stop "my service name"
net start "my service name"
22
Seybsen
net.exe stop "servicename" && net.exe start "servicename"
5
oluies

Pour redémarrer un service en cours d'exécution:

net stop "service name" && net start "service name"

Cependant, si vous ne savez pas si le service est exécuté en premier lieu et que vous souhaitez le redémarrer ou le démarrer, utilisez ceci:

net stop "service name" & net start "service name"

Cela fonctionne si le service est déjà en cours d'exécution ou non.

Pour référence, voici la documentation sur les symboles de traitement conditionnel.

4
Jamie Cockburn

Voici mon code, pour démarrer/arrêter un service Windows en utilisant la commande SC. Si le service ne parvient pas à démarrer/arrêter, il imprimera une information de journal. Vous pouvez l'essayer par Inno Setup.

{ start a service }
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc start ServiceName:'+SysErrorMessage(ResultCode));
{ stop a service }
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode));
2
LEo

Vous pouvez démarrer et arrêter et interroger des services à l'aide de la commande SC . Quant à innosetup, je ne suis pas sûr.

1
rerun

PowerShell comporte un Restart-Service cmdlet, qui démarre ou redémarre le service selon les besoins.

Le Restart-Service La cmdlet envoie un message d'arrêt puis un message de démarrage au contrôleur de service Windows pour un service spécifié. Si un service a déjà été arrêté, il est démarré sans vous avertir d'une erreur.

Vous pouvez spécifier les services par leur nom de service ou leur nom d'affichage, ou vous pouvez utiliser le paramètre InputObject pour passer un objet qui représente chaque service que vous souhaitez redémarrer.

C'est un peu plus infaillible que d'exécuter deux commandes distinctes.

La façon la plus simple de l'utiliser est de passer directement le nom du service ou le nom d'affichage:

Restart-Service 'Service Name'

Il peut être utilisé directement à partir de l'invite cmd standard avec une commande comme:

powershell -command "Restart-Service 'Service Name'"
0
mwfearnley