• ベストアンサー
  • すぐに回答を!

Windowsバッチのサービス化後の実行エラー

  • 質問No.8483509
  • 閲覧数12694
  • ありがとう数2
  • 回答数2

お礼率 100% (14/14)

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は違いますが、バッチをサービス登録した記憶があるので、出来ない訳は
ないかと思っているのですが。。

こちら対応方法または関連情報をお持ちの方がいらっしゃましたら、ご回答願います。

以上

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 81% (646/790)

サービスとして作成されていないプログラムをサービスに登録しているので当然の結果のような気がしますが。。。

>以前、OSは違いますが、バッチをサービス登録した記憶があるので、出来ない訳は
>ないかと思っているのですが。。

Windows Server 2003まではリソースキットの中に instsrv.exeとsrvany.exe という通常のプログラム(サービスとして作成されていないプログラム)をサービス化するプログラムがあります。
このツールはバッチもサービス化できます。
これを使用したときの記憶があるのではないでしょうか?

Windows Server 2008以降ではリソースキットはありませんので、このツールは使用できない可能性が高いことになります。
同じことをするフリーのツールとしてsexeというのがありましたが、フリーソフトはNGということで申し訳ありませんが解決策が見当たりません。
※ 余談ですがWindowsリソースキットもマイクロソフトは正式にサポートしていないので厳密にはNGということになります。

.netでのサービスの作成はそれほど難しくないと思いますので、作ってしまうのも一つの手だと思います。
タスクスケジューラの繰り返し間隔については他の方が書かれている通りです。
お礼コメント
yoakezeyo

お礼率 100% (14/14)

ご回答ありがとうございます。
そうですか、そんな簡単なものではないのですね。
サービス起動される前提で、プログラムを作る必要があるのですね。。
了解しました。タスクスケジューラの方向で検討します。
投稿日時:2014/02/21 20:12

その他の回答 (全1件)

  • 回答No.1
> タスクスケジューラは最少の起動間隔が5分なので、NG。

タスクスケジューラの『繰り返し間隔』項目は、選択肢にある
もの以外の値もキーボードから直接入力できます。なので、
「1分間」でも「60秒間」でも指定すれば良いかと。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1332reptsk/reptsk.html
補足コメント
yoakezeyo

お礼率 100% (14/14)

ご回答ありがとうございます。
検証環境でも確認できました。
なるほど、この設定ができれば対応できそうですね。
こっちのほうが簡単ですかね。
投稿日時:2014/02/21 20:10
お礼コメント
yoakezeyo

お礼率 100% (14/14)

ご回答ありがとうございました。
投稿日時:2014/02/21 20:13
関連するQ&A

ピックアップ

ページ先頭へ