我遇到了这个question,看起来它会解决我想要做的事情,而且我试图在创建Process()对象时使用类似的代码" SC"从代码中调用命令。
static void SetRecoveryOptions(string serviceName)
{
int exitCode;
using (var process = new Process())
{
var startInfo = process.StartInfo;
startInfo.FileName = "sc";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
// tell Windows that the service should restart if it fails
startInfo.Arguments = string.Format("failure \"{0}\" reset= 0 actions= restart/60000", serviceName);
process.Start();
process.WaitForExit();
exitCode = process.ExitCode;
}
if (exitCode != 0)
throw new InvalidOperationException();
}
我尝试从几个位置调用该代码(例如服务安装程序的已提交事件处理程序,服务本身的OnStart等),但每次我在Process()时都会收到异常对象已创建。例外情况是:"由于对象的当前状态而不允许操作"。
我在这里缺少什么想法?