gpt4 book ai didi

c# - Topshelf 服务未启动访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 23:23:00 25 4
gpt4 key购买 nike

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

[Success] Name Stuff, [Success] Description Sample Topshelf Host, [Success] ServiceName Stuff Topshelf v4.0.0.0, .NET Framework v4.0.30319.42000 Topshelf.Hosts.StartHost Error: 0 : The service failed to start., System.InvalidOperationException: Cannot start service Stuff on computer '.'. ---> System.ComponentModel.Win32Exception: Access is denied --- End of inner exception stack trace --- at System.ServiceProcess.ServiceController.Start(String[] args) at System.ServiceProcess.ServiceController.Start() at Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(String serviceName, TimeSpan startTimeOut) at Topshelf.Hosts.StartHost.Run()

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

最佳答案

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

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

按照那里的步骤,设置可执行文件的权限(在我的例子中是 bin/debug 文件夹),topshelf 服务运行良好。

[Success] Name Stuff, [Success] Description Sample Topshelf Host, [Success] ServiceName Stuff Topshelf v4.0.0.0, .NET Framework v4.0.30319.42000 The Stuff service was started.

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

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

关于c# - Topshelf 服务未启动访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com