La manière basique consiste a invoquer une commande Windows via
ProcessBuilder, ce qui permet de determiner si un service tourne en parsant le flux de sortie de ce process ou en vérifiant la valeur retournée par la commande :
Permet de voir tous les services actifs. Donc si celui que tu cherches n'est pas dans la liste, c'est qu'il ne tourne pas.
sc queryex type=service state=all
Permet d'avoir un résultat plus détaillé pour tous les services inscrits sur le système (y compris ceux qui ne tournent pas).
sc query <nom du service>
Permet d'avoir un résultat juste pour le service demandé.
Lancer un service n'est pas trop complique
net start <nom du service>
La commande
sc permet également de démarrer un service
sc start <nom du service>

En general, stopper ou demarrer un service demande d'avoir des permissions système. Il faudra donc peut-être que l'administrateur donne a l'utilisateur le droit de faire de genre de chose pour que cette commande puisse réussir sans échouer avec un "Access denied". Alternativement, il faudra lancer java depuis un prompt administrateur.
- net est plus ancien et cette commande bloque tant que l'action n'est pas terminée (ou échouée).
- sc est une commande plus récente qui retourne immédiatement sans attendre que l'action soit complétée ni verifier si elle prend effet. Cette commande offre également plus d'options sur la manière d’interagir avec des services
Partager