J'ai un service Windows que j'installe en utilisant InstallUtil.exe. Même si j'ai défini la méthode de démarrage sur Automatique, le service ne démarre pas une fois installé, je dois ouvrir manuellement les services et cliquer sur Démarrer. Existe-t-il un moyen de le démarrer soit via la ligne de commande, soit via le code du Service?
c#
windows-services
mickyjtwin
la source
la source
ServiceController
dans une instruction using.ServiceInstaller
variable de votre classe. Une telle classe doit implémenterSystem.Configuration.Install.Installer
. Consultez ce guide msdn pour plus d'informations.serviceInstaller
est probablement l'ServiceInstaller
objet auquel se réfèresender
le gestionnaire d'événements, qui est normalement instancié dans leServiceInstaller()
constructeur. Par conséquent, vous pouvez ajouterServiceInstaller serviceInstaller = (ServiceInstaller)sender;
avant lausing
déclaration.Après une petite refactorisation, voici un exemple de programme d'installation de service Windows complet avec démarrage automatique:
la source
Que diriez-vous de suivre les commandes?
la source
Options programmatiques pour contrôler les services:
StartService
méthode. C'est bon pour les cas où vous devez être en mesure d'effectuer d'autres traitements (par exemple pour sélectionner quel service).Start-Service
viaRunspaceInvoke
ou en créant le vôtreRunspace
et en utilisant saCreatePipeline
méthode pour exécuter. C'est bon pour les cas où vous devez être en mesure d'effectuer d'autres traitements (par exemple pour sélectionner quel service) avec un modèle de codage beaucoup plus simple que WMI, mais dépend de l'installation de PSH.ServiceController
la source
Vous pouvez utiliser la ligne de commande suivante pour démarrer le service:
la source
Utilisez ServiceController pour démarrer votre service à partir du code.
Mise à jour: Et une manière plus correcte de démarrer le service à partir de la ligne de commande est d'utiliser la commande "sc" ( Service Controller ) au lieu de "net".
la source
Bien que suivant exactement la réponse acceptée, je n'étais toujours pas en mesure de démarrer le service - j'ai reçu à la place un message d'échec lors de l'installation indiquant que le service qui venait d'être installé ne pouvait pas être démarré, car il n'existait pas, malgré l'utilisation
this.serviceInstaller.ServiceName
plutôt qu'un littéral ...J'ai finalement trouvé une solution alternative qui utilise la ligne de commande:
la source
Le démarrage automatique signifie que le service est automatiquement démarré au démarrage de Windows. Comme d'autres l'ont mentionné, pour le démarrer à partir de la console, vous devez utiliser le ServiceController.
la source
Vous pouvez utiliser la
GetServices
méthode de la classe ServiceController pour obtenir un tableau de tous les services. Ensuite, trouvez votre service en vérifiant laServiceName
propriété de chaque service. Lorsque vous avez trouvé votre service, appelez laStart
méthode pour le démarrer.Vous devriez également vérifier la
Status
propriété pour voir dans quel état elle se trouve avant d'appeler start (elle peut être en cours d'exécution, en pause, arrêtée, etc.).la source
Vous avez corrompu votre designer. Ajoutez à nouveau votre composant d'installation. Il doit avoir un serviceInstaller et un serviceProcessInstaller. Le serviceInstaller avec la propriété Méthode de démarrage définie sur Automatique démarre une fois installé et après chaque redémarrage.
la source
Juste une remarque: vous avez peut-être configuré votre service différemment en utilisant l'interface des formulaires pour ajouter un programme d'installation de service et un programme d'installation de projet. Dans ce cas, remplacez l'endroit où il est indiqué serviceInstaller.ServiceName par "nom du concepteur" .ServiceName.
Vous n'avez pas non plus besoin des membres privés dans ce cas.
Merci pour l'aide.
la source