查看服务:
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();
}
最终启动程序时便设置了以下参数。