我需要编写一个程序来删除窗口服务。但是,我只有服务器名称。我应该如何删除它?
答案 0 :(得分:0)
您可以使用System.ServiceProcess.ServiceController类找到要删除的服务。 下面的代码将为您提供安装在计算机上的一系列服务(ServiceName属性是您用来识别服务的名称):
ServiceController.GetServices(string machineName);
要删除该服务,您可以像下面这样调用sc命令:
ProcessStartInfo psi = new ProcessStartInfo("sc");
psi.Arguments = string.Format("{0} delete \"{1}\"", machineName, serviceName).Trim();
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
var process = Process.Start(psi);
process.WaitForExit(timeoutMilliseconds);
var output = process.StandardOutput.ReadToEnd();
if (process.ExitCode != 0)
{
throw new Exception(string.Format("Service delete for Windows Service {0} failed.", serviceName));
}
以上代码将尝试删除服务,并在超时毫秒后无法执行操作时引发异常。