2016-07-25 12 views
2

Topshelfサンプルアプリケーション(バージョン4.0.1)は、コンソールに書き込むだけのTimedEventを持つアプリケーションをビルドしました。 Adminとしてインストールしてokを実行できます。 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()

は、何も入力または出力ファイルが存在しないので、他のファイルへのアクセス権限が問題になることはありません。

答えて

2

この場合、入出力にファイルのアクセス許可がない場合でも、実行可能ファイルには適切なアクセス許可が設定されている必要があります。設定は "読み込み+実行"する必要があります。 Cannot Start Windows Service in NetworkService account

が手順に従うと、(ビン/デバッグフォルダ私の場合)の実行可能ファイルにアクセス権を設定し、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を用いた場合であってもそう、あなたはまだ他のすべてを実行するためのサービスのために適切に設定されていることを確認する必要があります。

Windowsサービスと同様のアクセス許可の問題に対するその他の回答で推奨されているように、レジストリの編集よりもこのアプローチを推奨します。すべてのサービスをLocalSystemとして実行します。

関連する問題