2010-10-25 5 views
2

J'utilise le fragment de code suivant pour modifier les informations d'identification de compte et de mot de passe d'un service Windows. Cependant, cela ne fonctionne que si le service est arrêté.Démarrer et arrêter un service

Comment puis-je, par programmation, arrêter le service avant d'effectuer ces modifications, puis le redémarrer?

namespace ServiceAccount 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string serviceName = "DummyService"; 
      string username = ".\\Service_Test"; 
      string password = "Password1"; 

      string objPath = string.Format("Win32_Service.Name='{0}'", serviceName); 
      using (ManagementObject service = new ManagementObject(new ManagementPath(objPath))) 
      { 
       object[] wmiParams = new object[11]; 
       wmiParams[6] = username; 
       wmiParams[7] = password; 
       service.InvokeMethod("Change", wmiParams); 
      } 

     } 
    } 
} 

Répondre

6

Utilisez la classe ServiceController. Il expose des méthodes pour démarrer et arrêter un service, à condition que vous connaissiez son nom.

ServiceController sc = new ServiceController("Simple Service"); 
if (sc.Status == ServiceControllerStatus.Stopped) 
{ 
    sc.Start(); 
} 
Questions connexes