1. 程式人生 > >C#使用SC命令,控制windows服務引數

C#使用SC命令,控制windows服務引數

檢視服務:

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

最終啟動程式時便設定了以下引數。