質問: Windwos環境で、バッチファイルをサービスに登録したのですが、エラーで実行できません。 【経緯、やりたい事、制約】 ・本当はPowerShellで作ったスクリプトをサービス化して実行したい のですが、後述の同エラーが出力され、いろいろ解析しているうちに、 そもそも簡単なバッチも起動できないので、Windowsのサービス登録~実行に 問題があると思い、まずはバッチを起動の仕方を質問しています。。 ・タスクスケジューラは最少の起動間隔が5分なので、NG。 1分毎に起動する要件があります。 ・ログインスクリプトは、NG。サーバ機なので、常時ログインは出来ない。 ・Windowsサポートされていないフリーツール等の利用はNG。セキュリティ上の制限。 【環境】 OS: ・Win2K8R2 ・Win2K12 ※どちらでも同じ現象でした。 ログインユーザー:Administrator 【実施内容】 (1)コマンドプロンプトで以下を実施。 sc create test binpath= "C:\AAAAA.bat" →正常登録 (2)サービス画面より”test”を開始。 →エラー画面が出力されます。 「ローカルコンピュータのtestサービスを開始できません。 エラー1053:そのサービスは指定時間内に開始要求または制御要求に応答しませんでした。」 →イベントには以下2つの出力がありました。 「イベントID7009 testサービスの接続を待機中にタイムアウト(30000ミリ秒)になりました。」 「イベントID7000 (画面出力と同じ内容のエラーメッセージ)」 【実行バッチ】 --AAAAA.bat---- echo aaa >>c:\aaa.txt --------------- 【対応してみたこと】 ・バッチを直接ダブルクリック。 →問題無し。 ・コマンドプロンプト上で実行。 →問題無し。 ・サービスの実行ユーザをadministratorに変更。 →エラー現象変わらす。 ・レジストリのタイムアウト値を変更。 →エラー現象変わらす。エラーメッセージ内の30000ミリ秒の値は変更されてました。 ・バッチの場所を変更。administratorのユーザディレクトリ配下等。 →エラー現象変わらす。 ・バッチおよび上位のディレクトリのセキュリティ設定をeveryoneフルコントロールに変更。 →エラー現象変わらす。 Web等で探した対応は一通り、実施してみましたが、解消出来ませんでした。 以前、OSは違いますが、バッチをサービス登録した記憶があるので、出来ない訳は ないかと思っているのですが。。 こちら対応方法または関連情報をお持ちの方がいらっしゃましたら、ご回答願います。 以上
回答: サービスとして作成されていないプログラムをサービスに登録しているので当然の結果のような気がしますが。。。 >以前、OSは違いますが、バッチをサービス登録した記憶があるので、出来ない訳は >ないかと思っているのですが。。 Windows Server 2003まではリソースキットの中に instsrv.exeとsrvany.exe という通常のプログラム(サービスとして作成されていないプログラム)をサービス化するプログラムがあります。 このツールはバッチもサービス化できます。 これを使用したときの記憶があるのではないでしょうか? Windows Server 2008以降ではリソースキットはありませんので、このツールは使用できない可能性が高いことになります。 同じことをするフリーのツールとしてsexeというのがありましたが、フリーソフトはNGということで申し訳ありませんが解決策が見当たりません。 ※ 余談ですがWindowsリソースキットもマイクロソフトは正式にサポートしていないので厳密にはNGということになります。 .netでのサービスの作成はそれほど難しくないと思いますので、作ってしまうのも一つの手だと思います。 タスクスケジューラの繰り返し間隔については他の方が書かれている通りです。