首页 > 解决方案 > ServiceController 异常(无法控制计算机“.”上的服务。)

问题描述

我正在尝试从以管理员身份运行的程序向我的服务 TestService 发送命令,我能够很好地启动/停止它,但是每当我尝试 ExecuteCommand() 时,我都会遇到异常:

无法控制计算机“.”上的服务。

        try
        {
            System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("TestService");
            
            if (service.Status == ServiceControllerStatus.Stopped)
            {
                service.Start();
                service.WaitForStatus(ServiceControllerStatus.Running);
            }

            service.ExecuteCommand(100); // Causes Exception every time
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
            throw e;
        }

标签: c#windows

解决方案


发生这种情况是因为 ExecuteCommand 仅接受整数:128-256,128 以下的任何内容都是系统保留的,并且由于正在传递 100,因此会发生异常。

service.ExecuteCommand(100)用类似的东西替换service.ExecuteCommand(130)就可以了。


推荐阅读