【问题标题】:Topshelf service not starting Access is deniedTopshelf 服务未启动访问被拒绝
【发布时间】:2016-07-25 14:24:53
【问题描述】:

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

[Success] Name Stuff, [Success] Description Sample Topshelf Host, [成功] ServiceName Stuff Topshelf v4.0.0.0, .NET Framework v4.0.30319.42000 Topshelf.Hosts.StartHost 错误:0:服务 无法启动。,System.InvalidOperationException:无法启动 计算机上的服务东西'.'。 ---> System.ComponentModel.Win32Exception:访问被拒绝---结束 内部异常堆栈跟踪 --- 在 System.ServiceProcess.ServiceController.Start(String[] args) 在 System.ServiceProcess.ServiceController.Start() 在 Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(字符串 服务名称,时间跨度开始超时)在 Topshelf.Hosts.StartHost.Run()

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

【问题讨论】:

    标签: c# topshelf


    【解决方案1】:

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

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

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

    [Success] Name Stuff, [Success] Description Sample Topshelf Host, [成功] ServiceName Stuff Topshelf v4.0.0.0, .NET Framework v4.0.30319.42000 Stuff 服务已启动。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多