web-dev-qa-db-fra.com

Comment créer un service exécutant un fichier .bat sur Windows 2008 Server?

J'ai créé le service en utilisant

sc create myService binpath=myservice.bat

Mais quand je le démarre, il échoue avec le message d'erreur suivant:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

Sur Win2k3, j'ai utilisé le srvany.exe du kit de ressources, mais il n'y a pas de kit de ressources pour win2k8. Pour l'instant, j'ai installé le srvany.exe sur ma machine, mais je ne pense pas que ce soit la meilleure façon de le faire.

Merci!

21
abyx

Bien sûr, vous ne pouvez pas exécuter un service comme celui-ci. Avez-vous essayé d'utiliser srvany dans le serveur 2008? Pour autant que je sache, il n'y a pas de version "officielle" de srvany pour s2k8, mais vous pouvez toujours essayer, n'est-ce pas?

EDIT: Oh, j'ai oublié! Nous utilisons également FireDaemon pour exécuter des applications non-service en tant que services. Cependant, il n'est pas gratuit et sa fonctionnalité est un peu trop adaptée à vos besoins.

9
shylent

Utilisez NSSM pour exécuter un .BAT ou tout ancien fichier .EXE en tant que service. C'est presque un remplacement pour SRVANY et c'est une application sans fioritures et sans chichis.

http://iain.cx/src/nssm/

J'ai eu le même problème que vous et NSSM était le seul utilitaire qui fonctionnait.

24
Matthew Blackford

Nous utilisons Task Scheduler pour exécuter la tâche au démarrage de l'ordinateur (qu'un utilisateur soit connecté ou non)

8
Korayem

Vous ne pouvez pas simplement exécuter un fichier .BAT ou tout ancien fichier .EXE en tant que service. Les services Windows ne fonctionnent pas que vous. Vous pouvez utiliser un utilitaire comme le non-Sucking Service Manager (NSSM) ou l'utilitaire non libre SRVANY de Microsoft pour exécuter un programme arbitraire en tant que service, mais vous constaterez peut-être que vous n'obtenez pas très " gracieux "comportement d'arrêt.

7
Evan Anderson

La commande SC ajoute simplement les entrées de registre requises pour un service - si le fichier que vous spécifiez n'est pas un exe de service valide, il ne le transformera pas en un.

3
Whisk

essayez ceci ... cela a fonctionné pour moi ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
2
Kushal Gangan

de: ce message sur les forums technet: http://social.technet.Microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Voici quoi faire ...

Au moment de cette publication, il n'y a pas d'outils du Kit de ressources Windows Server 2008, alors récupérez le "srvany.exe" dans les "Outils du Kit de ressources Windows Server 2003" et copiez-le dans un emplacement approprié sur votre serveur Win2008 (par exemple C:\Windows\System32 \). Utilisez "sc" pour créer un nouveau service qui lance "srvany" (par exemple sc créez MyService binPath = C:\Windows\System32\srvany.exe DisplayName = "My Custom Service") À l'aide de RegEdit: créez une clé "Paramètres" pour votre service (par exemple HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Paramaters \) À l'aide de RegEdit: dans la clé "Paramètres" nouvellement créée, créez une valeur de chaîne appelée "Application" et entrez le chemin d'accès complet à l'application que vous souhaitez exécuter en tant que un service. (Aucun devis requis.)

Et cela devrait le faire.

Remarque: certaines applications stockent leurs paramètres dans une ruche utilisateur, pas sous HKEY_LOCAL_MACHINE, vous devrez donc exécuter l'application pour la configurer, puis configurer le service pour qu'il s'exécute en tant qu'utilisateur.

2
user1977194

j'ai utilisé des schtasks Windows.

vous pouvez vous y référer. https://technet.Microsoft.com/en-us/library/cc725744.aspx#BKMK_hours

0
Yit Ming

J'ai trouvé deux autres options qui ne vous permettront pas d'atteindre votre portefeuille.

Vous pouvez avoir sc lancer srvany qui pointe alors vers votre programme. (Il y a un message sur le forum auquel je ne peux pas créer de lien car je n'ai pas assez de représentants ici même si je le fais sur StackOverflow - grognement)

Voici les étapes utilisées par l'affiche originale:

  1. Utilisez sc pour créer un nouveau service qui lance srvany (par exemple sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. En utilisant RegEdit: créez une clé Parameters pour votre service (par exemple HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. À l'aide de RegEdit: dans la clé Parameters nouvellement créée, créez une valeur de chaîne appelée Application et entrez le chemin d'accès complet à l'application que vous souhaitez exécuter en tant que service. (Aucun devis requis.)

Si cela semble être un peu un hack , vous pouvez créer un service .NET pour lancer votre processus. Si vous souhaitez ignorer quelques étapes, voici un service .NET open source qui peut lancer des processus génériques:

http://www.codeproject.com/KB/system/xyntservice.aspx

Ajustez-le à vos besoins, mais il fera la plupart de ce que vous voulez hors de la boîte.

0
databyte

Je suis tombé sur cette chose. Voici l'outil appelé Bat_To_Exe_Converter. Il est très très facile de convertir n'importe quel fichier .bat en fichier .exe. Essayez-le. Téléchargez d'abord le téléchargeur et il téléchargera automatiquement le Bat_To_Exe_Converter. Cela m'a vraiment aidé à créer un service qui exécute mon fichier .bat via .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad

0
Ilya