Topshelf服务未启动访问被拒绝

时间:2016-07-25 14:24:53

标签: c# topshelf

我构建了Topshelf示例应用程序(版本4.0.1),该应用程序是一个只写入控制台的TimedEvents。 可以安装并以管理员身份运行。 当安装为NetworkService(尝试以较少的权限运行以获得更好的安全性实践)时出现错误:

  

[Success] Name Stuff,[Success]描述示例Topshelf Host,   [Success] ServiceName Stuff Topshelf v4.0.0.0,.NET Framework   v4.0.30319.42000 Topshelf.Hosts.StartHost错误:0:服务   无法启动。,System.InvalidOperationException:无法启动   服务电脑上的东西'。'。 --->   System.ComponentModel.Win32Exception:访问被拒绝---结束   内部异常堆栈跟踪--- at   System.ServiceProcess.ServiceController.Start(String [] args)at   System.ServiceProcess.ServiceController.Start()at   Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(字符串   serviceName,TimeSpan startTimeOut)at   Topshelf.Hosts.StartHost.Run()

在这种情况下,没有输入或输出文件,因此对其他文件的访问权限应该不是问题。

1 个答案:

答案 0 :(得分:2)

事实证明,在这种情况下,即使没有输入/输出的文件权限来处理,可执行文件也需要设置适当的权限。设置需要"读取+执行"。

此问题是此答案的变体: Cannot Start Windows Service in NetworkService account

按照那里的步骤,设置可执行文件的权限(在我的情况下是bin / debug文件夹)和topshelf服务运行正常。

  

[Success] Name Stuff,[Success]描述示例Topshelf Host,   [Success] ServiceName Stuff Topshelf v4.0.0.0,.NET Framework   v4.0.30319.42000 Stuff服务已经启动。

因此,即使使用Topshelf,您仍然必须确保其他所有内容都已正确设置才能运行该服务。

我建议这种方法优于注册表编辑,或者只是将所有服务作为LocalSystem运行,正如我在Windows服务的类似权限问题的其他答案中所推荐的那样。