以编程方式删除Windows Service C#

时间:2018-07-13 06:19:56

标签: c#

我需要编写一个程序来删除窗口服务。但是,我只有服务器名称。我应该如何删除它?

1 个答案:

答案 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));
        }

以上代码将尝试删除服务,并在超时毫秒后无法执行操作时引发异常。