2009-07-11 7 views
8

come non avviare/arrestare i servizi utilizzando il comando net stop in C# ad esempiocome si fa avviare/arrestare i servizi utilizzando il comando net stop in C#

Dim pstart As New ProcessStartInfo 
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.System) 
Dim p As New Process 
pstart.FileName = path + "\cmd.exe" 
pstart.UseShellExecute = False 
pstart.CreateNoWindow = True 
pstart.WorkingDirectory = path 
pstart.FileName = "cmd.exe" 
pstart.Arguments = " net start mysql" 
p.StartInfo = pstart 
p.Start() 

ho usato classe processo, ma senza alcun risultato

risposta

24

Invece di utilizzare un metodo grezzo come Process.Start, è possibile utilizzare la classe ServiceController per avviare/arrestare un determinato servizio su un computer locale/remoto.

using System.ServiceProcess; 
ServiceController controller = new ServiceController(); 

controller.MachineName = "."; 
controller.ServiceName = "mysql"; 

// Start the service 
controller.Start(); 

// Stop the service 
controller.Stop(); 
+0

Sono assolutamente scritto anche questo, e non ha mostrato la cosa "nuove risposte" prima ho postato. Buon lavoro! –

+0

grazie per la tua risposta veloce –

+1

Dovrai aggiungere anche un riferimento a System.ServiceProcess. –

3

è necessario passare l'opzione "/ c" per cmd.exe

pstart.Arguments = "/c net start mysql" 
6

Si potrebbe voler dare un'occhiata alla classe System.ServiceProcess.ServiceController, che fornisce un'interfaccia gestita per i servizi di Windows'.

In questo caso:

var mysql = new System.ServiceProcess.ServiceController("mysql"); 
if (mysql .Status == ServiceControllerStatus.Stopped) { 
    mysql.Start(); 
} 
+0

Grazie, anche a te. E a proposito, la "New Answers" sondaggi ogni minuto, quindi potrebbe aver perso :) – Kirtan

Problemi correlati