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

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

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は違いますが、バッチをサービス登録した記憶があるので、出来ない訳は ないかと思っているのですが。。 こちら対応方法または関連情報をお持ちの方がいらっしゃましたら、ご回答願います。 以上

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数13180
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.2
  • maesen
  • ベストアンサー率81% (646/790)

サービスとして作成されていないプログラムをサービスに登録しているので当然の結果のような気がしますが。。。 >以前、OSは違いますが、バッチをサービス登録した記憶があるので、出来ない訳は >ないかと思っているのですが。。 Windows Server 2003まではリソースキットの中に instsrv.exeとsrvany.exe という通常のプログラム(サービスとして作成されていないプログラム)をサービス化するプログラムがあります。 このツールはバッチもサービス化できます。 これを使用したときの記憶があるのではないでしょうか? Windows Server 2008以降ではリソースキットはありませんので、このツールは使用できない可能性が高いことになります。 同じことをするフリーのツールとしてsexeというのがありましたが、フリーソフトはNGということで申し訳ありませんが解決策が見当たりません。 ※ 余談ですがWindowsリソースキットもマイクロソフトは正式にサポートしていないので厳密にはNGということになります。 .netでのサービスの作成はそれほど難しくないと思いますので、作ってしまうのも一つの手だと思います。 タスクスケジューラの繰り返し間隔については他の方が書かれている通りです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • Windowsバッチでサービス起動チェック

    タイトルの通り、Windowsバッチでサービスが起動しているかどうかチェックし、 その結果を踏まえて、処理分岐したいのですが、 サービス起動チェックの結果が標準出力となってしまうため、 結果をバッチプログラム内で使用できずに困っています。 例を記述します。 SET LISTFILEPATH=サービス名リストファイルのフルパス FOR /F "tokens=*" %%a IN (%LISTFILEPATH%) DO NET START | find /c "%%a" …A 上記のAの結果をバッチ内の変数かなんかに代入して使いたいのですが、 標準出力で画面に出力されてしまいます。 なにかよい方法はあるでしょうか? よろしくお願いいたします。 ※サービス名リストファイルは、1行に1サービス名が記載されているテキストファイルです。 例> Background Intelligent Transfer Service Base Filtering Engine CNG Key Isolation COM+ Event System Computer Browser Cryptographic Services DCOM Server Process Launcher こんな感じ。

  • Windowsサービス化

    あるバッチ(永久ループのJavaを実行してます)を、Windowsのサービスに登録する方法はないでしょうか? exeをサービス化するにはツールを使えばできることまで分かったのですが、batファイルを同じようにすることは出来ないでしょうか?

  • MYSQLサービス停止時にWindowsイベントログにエラーが書き込まれてしまいます。

    MYSQL(Windows)の起動・停止について Windows2003ServerでのMYSQL利用について質問が有ります。 MYSQL4.0.25を利用しています。 毎晩サーバの再起動を実施しています。 再起動前にコマンドプロンプトにて… "net stop apache" "net stop mysql" とサービスを停止した後にサーバの再起動をかけています。 "net stop mysql"を実施したタイミングで、Windowsの イベントログ(アプリケーション)に、以下のエラーが登録されます。 ((1)⇒(2)の順番で登録されます) (1)イベントID:100 ソース :mysql 種類 :エラー メッセージ:MySql:Normal shutdown (2)イベントID:100 ソース :mysql 種類 :エラー メッセージ:MySql:Shutdown Complete MYSQLはサービスを停止するたびにこのようなイベントログが記録されてしまうものなのでしょうか? MYSQLの設定を変えることによりイベントログに記録されないように するようなことは可能でしょうか? 色々と調べてみたのですが、明解な回答を得ることができませんでした。また初歩的な質問で大変恐縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • MySQL

その他の回答 (1)

  • 回答No.1
noname#212058
noname#212058

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございました。

質問者からの補足

ご回答ありがとうございます。 検証環境でも確認できました。 なるほど、この設定ができれば対応できそうですね。 こっちのほうが簡単ですかね。

関連するQ&A

  • サービス起動をサイレントバッチで行う方法を知りたい。

    自動に設定していても起動してくれていないサービス (驚速デフラグ2のO&O Defrag) があるので、 サービス起動のバッチファイルをスタートアップに登録して対処しました。 しかし、 バッチ実行時一瞬DOS画面がでるのが不愉快なので、 バッチファイルをサイレントに実行したいのですが、 何かよい方法はありませんでしょうか?。 初歩的な質問かも知れませんが調べてみたところ -sb をつければいけるような感じでしたが、うまくいきません。 何かうまい方法をご存知の方、お知恵を拝借させてください。 宜しくお願いいたします。

  • Windowsのサービス起動エラーおしえて

    Windows7 32bitで、Secure Socket Tunneling Protocol Service サービスを起動しようとすると 「ローカルコンピュータ上のSecure Socket Tunneling Protocol Serviceサービスは起動して 停止しました。サービスの中には、ほかのサービスやプログラムで使用されていない場合は 自動的に停止するもんがあります。」とエラーがでます。 どう対処すればいいでしょうか? サイトで見つけた「C:\Windows\System32\Microsoft\Protect」を消す。「C:\windows\system32\logfiles\WMI\RtBackup 」消す。を実施して現象は同じです。 よろしくお願いいたします。

  • ATコマンドでバッチを実行するとエラーになります。

    よろしくお願いします。 WindowsXP(SP1)、Windows2000(SP4)、Windows2003 ServerからLinuxサーバの共有領域に 接続する為にバッチファイル(AAA.bat)を作成しました。 AAA.batを実行したところ、Linuxサーバに接続する事が確認出来たので、 次にATコマンドでAAA.batを実行したところ下記のメッセージが 表示されました。 「システム エラー 1312が発生しました。  指定されたログオン セッションは存在しません。そのセッションは既に終了している可  能性があります。」 ATコマンドからAAA.bat(共有領域の接続)を実行する場合に、何か注意点がありましたら御教授お願いします。 また、ATコマンドで他のBATファイルを実行したところ正常に動作したので、スケジュールのサービス等には問題なさ そうです。 AAA.bat net use * \\***.***.***.***\coo\log syspass /user:system ※「***.***.***.***」の部分はIPアドレスです。 ATコマンド at 20:12 /interactive c:\test\AAA.bat

  • SQLをバッチで実行

    掲題の件で少し教えていただきたいことがあります。 バッチファイルでSQLPLUSを起動し、 @XXXXXXXXX.SQL >> XXX.log(バッチのログ)と 実行するのですが、このSQL文がインサート文や アップデート文など通常のSQL文だと バッチでのリダイレクションの結果に XX行作成されました。とかXX行更新されましたとか 出力されると思うのですが、 実行するSQL文の中でさらに、 @XXXXXXXXX.SQL と記述していると どのようにログファイルに出力されますか? XX行作成されました。とかXX行更新されましたとか が出るとうれしいのですが… わかりにくい質問かもしれませんがお願いいたします。

  • jarファイルをバッチで実行させたい

     今晩は。  jarファイルをコマンドプロンプト画面からバッチで実行させようとして、 バッチを下の様に書いてやりましたが、うまく動作しません。  一体どこが悪いのでしょうか。  「java -jar C:\Documents and Settings\デスクトップ\test.jar  pause」  実行すると「>pause 続行するには何かキーを押してください . . .」と表示されますが、 キーを押すと画面が消えてしまいます。  (実行が終わって、コマンドプロンプト画面が閉じられているみたいな・・・)  また、pauseを削除すると、やはり一度はコマンドプロンプトの画面が表示はされますが、 コマンドプロンプト画面が閉じられます。(実行はしているような気がするのですが、、、)  どのようにバッチの内容を変更すれば、実行画面が表示されたまま、プログラムが止まるのでしょうか。  宜しくお願いします。

    • ベストアンサー
    • Java
  • バッチでイベントログ出力したい

    バッチでイベントログ出力したい Windows2003でバッチファイルにてコマンドを実行し、エラーの場合は イベントログに出力したいと考えています。 ERRORLEVELを判定してエラーなら eventcreate /ID 100 /L system /SO Cmd /T ERROR /D "エラーメッセージ" のようにeventcreateコマンドを実行するようにしています。 この"エラーメッセージ"の部分を実際のコマンド実行時のエラーメッセージを 入れ込みたいのですが複数行入れる方法がないか教えてください。 コマンド 2> file.log のようにエラーを出力してそれをfor文で読み込んでいこうとしたのですが 変数に複数行入れることができず、上手くいきません。 何か良い方法があれば教えてください。

  • コピーバッチの作成について。

    コピーバッチの作成について。 現在フォルダのコピーバッチを作成しようと考えています。 ただ、未熟なもので、なかなか難しく、できればご教授していただければと思い、 投稿させていただきました。 尚、現在作成したいコピーバッチは下記となっています。 1. テストPC01に不定期に配置されるフォルダを、テストPC02上にコピーする。 (フォルダ名はTEST20100919という形で、TESTのみ固定で日付が毎回変動する) 1.5 フォルダがない場合はバッチファイル終了。 2. コピー後に、テストPC02の特定のサービスを停止する。 3. テストPC02にコピーした、TEST20100919をTESTにリネームする。 4. 2.で停止したサービスを起動する。 5. テストpc01のコピー元フォルダを削除する。 (また、上記のバッチで実行された内容をログに吐き出させたいと考えています) このような処理をバッチファイルで行うことは可能でしょうか。 可能でしたら、お手数ですがご教授願えないでしょうか。 よろしくお願いいたします。

  • バッチでINSRT文実行すると一制約エラー、会話型で実行するとエラーに

    バッチでINSRT文実行すると一制約エラー、会話型で実行するとエラーにならない。 すみませんが、教えて頂けませんか。 1.oracle10gです。 2.バッチの内容は以下の通りです。 sqlplus USER/PASS@DB @COPY_テーブル名.sql > COPY_テーブル名.log pause exit 3.COPY_テーブル名.sqlの内容は以下の通りです。 INSERT INTO コピー先テーブル名 ( AA, BB, CC, DD, EE ) SELECT コピー元テーブル名.AA, コピー元テーブル名.BB, コピー元テーブル名.CC, コピー元テーブル名.DD, コピー元テーブル名.EE FROM コピー元テーブル名; / exit 4.エラーメッセージは以下の通りです。 57行が作成されました。 INSERT INTO コピー先テーブル名 ( * 行1でエラーが発生しました。: ORA-00001: 一意制約(コピー先テーブル名_PK)に反しています 5.コピー元のデータに一意制約違反になるようなデータはありません。  データも正しく入ってます。上記、エラーメッセージがお客様より指摘を受け、  説明できなくて困っています。 すみませんが、よろしくお願い致します。

  • 実行結果を戻り値で取得したい

    MS-DOSバッチの実行結果を文字列で取得したいです。 イメージ例としては、下記のようなバッチ2つがあり、 バッチAを起動します。そうすると実行結果の戻り値として 「TEST」という文字列が取得できたら良いです。  ※下記例では「ERRORLEVEL」に入っているようなイメージです。 しかしながら、ERRORLELVEに格納できるのは数値のみの為、 エラーになってしまいます。 どうすれば、実行結果を戻り値で取得できるでしょうか? お手数ですが、MS-DOSで不可能な場合、VBScriptやWSHでも かまいませんので、処理をキックしてその戻り値を文字列で取得する方法を お教えください。お願いいたします。 -------------------------------- 例 【バッチA】 call バッチB echo %ERRORLEVEL% 【バッチB】 exit /b "TEST" -------------------------------- と実行し

  • Windows7 タスクスケジュール実行について

    windowsXPからwindows7へ端末を変更しました。 これまで他の端末からwindowsXPへバッチ(ファイルコピー)をタスクで実行すると問題なくコピーされましたがWindows7に変更してからコピーが出来なくなりました。 ※バッチを手動で起動すれば問題なくコピーされます。 ログを見るとファイル(test.log)があるのに 0 個のファイルをコピーしました。 と出力されコピーできません。 何が問題なのか解決策があれば教えてほしいです。 D:\tmp>net use \\IPアドレス\フォルダ名 パスワード/ユーザ名 D:\tmp>COPY D:フォルダ名\test.log \\IPアドレス\フォルダ名\test.log 0 個のファイルをコピーしました。 よろしくお願いします。