C#使用SC命令,控制windows服務引數
阿新 • • 發佈:2018-12-27
檢視服務:
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController sController in services)
{
Console.WriteLine(sController.ServiceName + " " + sController.Status);
}
Console.ReadKey();
程式碼執行SC
public static string excuteCmd(string cmd) { Console.WriteLine("will be excute command {0}", cmd); Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.Arguments = "/c " + cmd; proc.Start(); proc.WaitForExit(); string ret = proc.StandardOutput.ReadToEnd() + proc.StandardError.ReadToEnd(); Console.WriteLine(ret); return ret; }
程式啟動時設定
其中的myServerName可檢視服務得到。如果大家有什麼好的方法,能夠直接得到當前服務名,麻煩請告訴我一聲。
protected override void OnStart(string[] args) { // TODO: Add code here to start your service. string serviceName = "myServerName"; string cmd = String.Format("sc failure {0} reset=86400 actions=restart/60000/restart/120000/restart/120000", serviceName); excuteCmd(cmd); Start(); }
最終啟動程式時便設定了以下引數。