2010-07-22 20 views

Répondre

4

Vous pouvez utiliser ServiceController. Example here.

+0

Juste pour clarifier: Cet exemple ne fonctionne que si le service n'est pas arrêté. Voir le problème d'un autre utilisateur avec cela: http://stackoverflow.com/questions/3309990/cannot-restart-a-service-c/ –

1
ServiceController _ServiceController = new ServiceController([NameService]); 
if (_ServiceController.ServiceHandle != null) 
{ 
    _ServiceController.Stop(); 
    _ServiceController.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromMilliseconds([Time])); 

    _ServiceController.Start(); 
    _ServiceController.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromMilliseconds([Time])); 
} 
1

Vous aurez également besoin de vous assurer que l'utilisateur dispose d'un accès d'authentification appropriée (contrôle UAC) sur le système. Si elles n'ont pas l'accès approprié, vous finirez avec une exception dans le code.

+0

Oui, j'ai inclus un manifeste pour UAC. – fryguybob

+0

Il devient un peu plus compliqué que d'offrir simplement un fichier manifeste et d'utiliser MT pour lier le manifeste à l'exe ... vous devez également tenir compte des comptes limités, que je n'ai pas pu accomplir jusqu'ici. J'ai créé une application de barre des tâches de gestion pour gérer le service Windows, puis j'ai toujours demandé à l'utilisateur de "démarrer" le service avant de pouvoir configurer quoi que ce soit, puis de construire le service de façon à pouvoir toujours démarrer et utiliser les services WCF via des tuyaux nommés pour les administrer. –

Questions connexes