Exécuter un fichier de commandes en tant que service Windows

Pour exécuter une application, un fichier de commandes doit être lancé (ce qui permet par exemple de démarrer Jetty, d’afficher des journaux en direct, etc.). L’application ne fonctionnera que si ce fichier de commandes est en cours d’exécution. Je suis donc obligé d’exécuter ce fichier de commandes et de ne pas me déconnecter du serveur Windows.

Ce fichier de commandes peut-il être exécuté en tant que service? J’expérimente l’une des suggestions d’une question similaire .

    NSSM est totalement gratuit et hyper facile, avec l’invite de commande / terminal en tant qu’administrateur:

    nssm install "YourCoolServiceNameLabel" 

    puis une boîte de dialog apparaîtra pour vous permettre de choisir où se trouve le fichier que vous souhaitez exécuter.

    désinstaller

     nssm remove "YourCoolServiceNameLabel" 

    Pourquoi ne pas simplement le configurer en tant que tâche planifiée qui doit être exécutée au démarrage?

    Comme le dit Doug Currie, utilisez RunAsService.

    De mon expérience passée, vous devez vous rappeler que le service que vous générez

    • avoir un ensemble complètement différent de variables d’environnement
    • doivent être soigneusement inspectés pour les droits / permissions problèmes
    • peut causer des ravages s’il ouvre des boîtes de dialog demandant n’importe quel type d’entrée

    Je ne sais pas si le dernier s’applique toujours… c’était une grande jument de nuit dans un projet sur lequel j’ai travaillé il y a quelque temps.

    Bien qu’il ne soit pas gratuit (mais à 39 $), FireDaemon a si bien fonctionné que je le recommande. Il exécutera votre fichier de commandes, mais il contient une foule de fonctionnalités supplémentaires et très utiles, telles que la planification, la surveillance du service, l’interface utilisateur graphique ou XML des services, les dépendances, les variables d’environnement et la gestion des journaux.

    J’ai commencé par utiliser FireDaemon pour lancer les serveurs d’applications JBoss ( run.bat ) mais j’ai réalisé peu après que la richesse des capacités de configuration de FireDaemon me permettait de laisser tomber le fichier batch et de recréer l’intention de ses commandes dans la définition du service FireDaemon.

    Il y a aussi un SUPER FireDaemon appelé Trinity que vous voudrez peut-être examiner si vous avez un grand nombre de serveurs Windows sur lesquels gérer ce service (ou techniquement, n’importe quel service).

    AlwaysUp exécutera facilement votre fichier de commandes en tant que service. Il est similaire à FireDaemon (mentionné ci-dessus) et n’est pas gratuit, mais vous trouverez peut-être que le jeu de fonctionnalités enrichies est un atout dans un environnement professionnel.

    Bonne chance!

    Il existe un gestionnaire de fichiers Windows intégré pour cela: sc create . Pas aussi sophistiqué que nssm, mais vous n’avez pas à télécharger de logiciel supplémentaire.

     sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file] 

    Remarque

    • start = demande signifie que vous devez démarrer le service vous-même
    • les espaces sont requirejs après =
    • J’ai rencontré une erreur au démarrage du service que le service n’a pas répondu dans les délais, mais il était clair que le service avait exécuté le .bat avec succès. Je n’ai pas encore creusé dans cela, mais ce thread a connu la même chose et l’a résolu en utilisant nssm pour installer le service.