尝试启动或停止服务时出现C#错误

时间:2015-03-26 15:32:20

标签: c# .net service

目前正在尝试编写一个可以检测服务特定状态的C#程序。如果服务正在运行,程序将关闭它。如果服务停止,程序将运行它。

以下是我的代码:

        ServiceController sc = new ServiceController("RtkAudioService");

        Console.WriteLine("Status = " + sc.Status);
        Console.WriteLine("Can Pause and Continue = " + sc.CanPauseAndContinue);
        Console.WriteLine("Can ShutDown = " + sc.CanShutdown);
        Console.WriteLine("Can Stop = " + sc.CanStop);
        Console.WriteLine("Machine Name = " + sc.MachineName);

        if (sc.Status.Equals(ServiceControllerStatus.Stopped))
        {
            sc.Start();
        } 
        else if (sc.Status.Equals(ServiceControllerStatus.Running))
        {
            sc.Stop();
        }

我试图为我的电脑停止/运行各种服务但是失败了。 RtkAudioService只是我失败的一个例子。所有错误消息都是相同的:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.ServiceProcess.dll

Additional information: Cannot open RtkAudioService service on computer '.'.

你们知道发生了什么吗?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我决定在启动或停止服务后添加此代码:

sc.WaitForStatus(ServiceControllerStatus."status");

答案 1 :(得分:0)

以管理员身份运行VS,它解决了调试中的问题。

因为程序必须有权运行或停止服务可能是管理员权限。

答案 2 :(得分:0)

同样的情况恰好发生在我身上,并通过在检查状态之前添加“sc.Refresh()”来解决(可能状态不是最新的,因此您正在尝试启动正在运行的进程)。 我会尝试在if之前打印服务状态,并确保结果符合您的期望。