无法在计算机上启动服务'。'

时间:2013-03-22 11:21:01

标签: c# windows-services

我有启动和停止服务代码

开始:

ServiceController service = new ServiceController("MyService");
service.Start();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
btnTxt = "Stop Service";

停止:

ServiceController service = new ServiceController("MyService");
service.Stop();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
btnTxt = "Start Service";

当我直接在Windows窗体应用程序中使用此代码并以管理员身份运行visula studio时,它工作正常。 但是现在我已经创建了一个类库并从Form中的类库中调用该方法。 cs文件。所以现在它给出了“无法在计算机上启动服务Myservice”的例外。'。任何人都可以帮助可能出现的问题吗? 类库中的所有其他方法都可以正常工作。

2 个答案:

答案 0 :(得分:0)

服务没有“与桌面交互”的权限,而Form.cs将引用需要此权限的库,因此服务将无法启动。

目前有一个非常有用的解决方案herehere可以在调试器中将您的服务作为控制台应用运行,或者作为“正确”服务运行。

答案 1 :(得分:0)

将代码修改为至少做一些日志:

您可以添加try catch以获取异常

try{

// your code
}
catch (Exception ex)
{
    System.Diagnostics.Trace.WriteLine(ex.ToString());
}

并在此处粘贴ex.message