2016-07-25 79 views
2

我構建了Topshelf示例應用程序(版本4.0.1),其中包含TimedEvents,它只寫入控制檯。 可以安裝並以管理員身份運行。 當作爲網絡服務安裝(試圖用更少的權限運行更好的安全實踐)了錯誤:Topshelf服務未啓動訪問被拒絕

[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()

在這種情況下,沒有輸入或輸出文件,所以訪問權限的其他文件不應該成爲問題。

回答

2

原來,在這種情況下,即使沒有文件權限來輸入/輸出照顧,可執行文件也需要適當的權限設置。該設置需要「讀取+執行」。

這個問題是這樣的答案在這裏的變化:按照相應的步驟,以及對可執行文件設置權限(在我的bin/debug文件夾)和topshelf服務運行正常 Cannot Start Windows Service in NetworkService account

[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服務的權限問題的答案推薦。