2009-07-11 62 views
8

如何啓動/停止在C# 使用net stop命令服務,例如如何啓動/停止使用net stop命令服務

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() 

我已經使用進程類,但沒有任何結果

回答

24

相反使用Process.Start這樣的粗糙方法,您可以使用ServiceController類來啓動/停止本地/遠程機器上的特定服務。

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

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

// Start the service 
controller.Start(); 

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

我完全寫到這,太,也沒有表現出「新答案」的東西我張貼之前。做得好! – 2009-07-11 05:17:26

+0

感謝您的快速響應 – 2009-07-11 05:22:05

3

您需要將「/ C」開關傳遞給CMD.EXE

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

你可能想看看System.ServiceProcess.ServiceController類,它提供了一個管理界面,Windows的服務。

在這種情況下:

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