Existe-t-il un moyen rapide, à partir d'un fichier exécutable, de créer un service Windows qui, une fois démarré, le lance?
windows
windows-services
Latorre allemand
la source
la source
Réponses:
Pour créer un service Windows à partir d'un exécutable, vous pouvez utiliser
sc.exe
:Vous devez avoir des guillemets autour du
exe
chemin réel et un espace après lebinPath=
.Plus d'informations sur la
sc
commande peuvent être trouvées dans Microsoft KB251192 .Notez qu'il ne fonctionnera pas pour n'importe quel exécutable: l'exécutable doit être un service Windows ( c'est-à-dire implémenter ServiceMain ). Lors de l'enregistrement d'un exécutable non-service en tant que service, vous obtiendrez l'erreur suivante en essayant de démarrer le service:
Il existe des outils qui peuvent créer un service Windows à partir d'exécutables arbitraires non liés au service, voir les autres réponses pour des exemples de tels outils.
la source
binpath=
ainsi que d'avoir à entourer le chemin exécutable avec des guillemets doubles est totalement faux, au moins pour Windows 10. la citation est requise si et seulement si le chemin contient des caractères spéciaux comme des espaces. De plus, la casse (lowe / upper / mixed-case) n'a pas d'importance n'importe où, dans les noms de variables aussi, etdisplayname="my service"
est un autre avantage à transmettre sur la ligne de commande lors de la création d'un service à afficher comme première ligne (Name
)services.msc
.binPath=
était requis pour moi sur Windows 7 mais pas sur Windows 10Utilisez NSSM ( le non-Sucking Service Manager ) pour exécuter un fichier .BAT ou tout fichier .EXE en tant que service.
http://nssm.cc/
nssm.exe install [serviceName]
la source
Extension de la réponse (Kevin Tong).
Étape 1: Téléchargez et décompressez nssm-2.24.zip
Étape 2: à partir du type de ligne de commande:
C:\> nssm.exe install [servicename]
il ouvrira l'interface graphique comme ci-dessous (l'exemple est le serveur UT2003), puis parcourez-le simplement: yourapplication.exe
Plus d'informations sur: https://nssm.cc/usage
la source
nssm.exe install [serviceName]
. Cette solution fonctionne mais si vous avez une application GUI, elle ne fonctionnera pas sur Win Serever2003. Si vous souhaitez le supprimer ultérieurement, utiliseznssm.exe remove [youservicename]
nginx
n'est pas nécessaire et trompeur. La commande fonctionnera également sans elle. Il s'agit d'un paramètre facultatif si vous souhaitez fournir le nom du service à partir de l'invite de commande.De nombreuses réponses existantes incluent une intervention humaine au moment de l'installation. Cela peut être un processus sujet aux erreurs. Si vous souhaitez que de nombreux exécutables soient installés en tant que services, la dernière chose que vous voulez faire est de les faire manuellement au moment de l'installation.
Vers le scénario décrit ci-dessus, j'ai créé serman , un outil en ligne de commande pour installer un exécutable en tant que service. Tout ce que vous avez besoin d'écrire (et d'écrire une seule fois) est un simple fichier de configuration de service avec votre exécutable. Courir
va installer le service.
stdout
etstderr
sont tous enregistrés. Pour plus d'informations, consultez le site Web du projet .Un fichier de configuration de travail est très simple, comme illustré ci-dessous. Mais il possède également de nombreuses fonctionnalités utiles telles que
<env>
et<persistent_env>
ci - dessous.la source
ces extras s'avèrent utiles .. doivent être exécutés en tant qu'administrateur
Si le nom de votre service comporte des espaces, placez-les entre "guillemets".
la source
sc create <service_name> binpath= <binary_path>
J'ai testé un bon produit pour ça: AlwaysUp . Pas gratuit mais ils ont une période d'essai de 30 jours pour que vous puissiez l'essayer ...
la source
Vous pouvez consulter mon petit utilitaire gratuit pour les opérations de création, de modification et de suppression de services. Voici un exemple de création:
Allez dans Service -> Modifier -> Créer
Fichier exécutable (google drive): [Télécharger]
Code source: [Télécharger]
Article de blog: [BlogLink]
Classe d'éditeur de service: WinServiceUtils.cs
la source