2012-05-02 191 views
5

私は簡単なWindowsサービスプロジェクトを持っています。私はhttp://msdn.microsoft.com/en-us/library/zt39148a.aspxにある指示に従っており、カスタムアクションの追加も含まれています。Windowsサービスのタスクスケジューラ - サービスを開始できません。サービスプロセスがサービスコントローラーに接続できませんでした

セットアッププロジェクトのリリースモードでビルドを実行するとき。サービスを実行したいサーバーに.msiを実行します。サービスマネージャを開くと、サービスが表示されます。私は手動でサービスを開始することもでき、必要なだけ正確に実行されます。

ただし、このサービスは5分ごとに実行したいので、タスクスケジューラでタスクを設定し、Windowsサービスの.exeをタスクにポイントします。ただし、タスクスケジューラがWindowsサービスを実行すると、次のエラーが発生します。

サービスを開始できません。サービスプロセスがサービスコントローラーに接続できませんでした

私はこれについて多くの研究を行いましたが、何も出ていません。誰かがこれを引き起こしている可能性について何か考えを持っていますか?

+0

サービスを開始するためにタスクスケジューラに正確に入れているものは何ですか? – CoreTech

+0

[全般]タブで、[ユーザーがログインしているかどうかを実行する]をクリックし、[パスワードを保存しない]チェックボックスをオンにします。 トリガータブで5分ごとに実行するように設定しました [アクション]タブでは、[プログラムを開始しました]を選択して、自分の.exeファイルを直接指し示しています – vcuankit

+0

既にサービスを終了し、 TaskSchedulerよりもサービス内でTimerを使用する方が良いでしょうか?動的に変更できる間隔として読み取りおよび使用できるレジストリ値を設定することもできます。必要なログがあれば、それをイベント・ビューアーに追加することができます。 –

答えて

2

いいえ、それは動作しません。サービスのexeは、タスクスケジューラから直接実行することはできません。サービスを開始するにはuse the "Net start" commandする必要があります。

Windows Vista以降の場合は、スケジュールされたタスクで[Run with highest privileges]ボックスをチェックしてUACを回避してください。

+0

ご連絡ありがとうございます、CoreTech。少し詳しく教えていただけますか?タスクスケジューラにNET STARTコマンドをどこに置くべきですか?サービスを開始するだけで、サービスを開始するだけであれば、[アクション]タブで何を配置する必要がありますか? – vcuankit

+0

[アクション]タブで、[プログラムの開始]に新しいアクションを追加し、[プログラム/スクリプト]フィールドに「net start [your-service-name]」と入力します。 – CoreTech

+0

私はこれを行うと、私がパラメータを使用しているかどうかを尋ねる警告を表示します。私はそれにNOをクリックし、それを実行しようとします。最終実行結果に「指定されたファイルが見つかりません」と表示されます。 – vcuankit

1

私の答えはコメントの中で正しく書式化されていなかったので、私は誰もがこれを見つけたという事実を知りたいと思っていました。基本的に、私はちょうど.BATファイルを作成し、その.batファイル内、私は次の2行に置く:MyServiceName

NET START MyServiceName
NET STOPを

NET STOPコマンドが同期しているとのを待ちますサービスを停止する前に完了するサービス。

ありがとうございました!

+0

通常、Windowsサービスは常に実行されるように設計されています。5分ごとに何かを実行する場合は、プレーンな古いコンソールアプリケーションを作成し、タスクスケジューラを使用して5分ごとに実行するか、またはすべての時間に実行され、タイマーまたはスリープステートメントを使用して5分ごとに起動するサービスを作成します。特定のタスクを実行するために5分ごとにサービスを開始してから、もう一度停止することは本当に良い設計ではありません – Andy

関連する問題