Windows 2008 Serverで.batファイルを実行するサービスを作成する方法は?


21

を使用してサービスを作成しました

sc create myService binpath=myservice.bat

しかし、起動すると、次のエラーメッセージが表示されて失敗します。

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

Win2k3では、リソースキットのsrvany.exeを使用しましたが、win2k8用のリソースキットはありません。とりあえずsrvany.exeをマシンにインストールしましたが、それが最善の方法だとは思いません。

ありがとう!


1
バッチファイルをサービスとして実行できますか?スケジュールされたタスクの方が優れていませんか?実際のWindowsサービスを使用する場合、OnLoadイベントは数秒以内に戻る必要があります。
tsilb 09

回答:


9

もちろん、そのようなサービスを実行することはできません。サーバー2008でsrvanyを使用してみましたか?私の知る限り、s2k8用のsrvanyの「公式」バージョンはありませんが、いつでも試すことができます。

編集:ああ、忘れてしまった!また、FireDaemonを使用して、非サービスアプリケーションをサービスとして実行します。しかし、それは無料ではなく、その機能はあなたのニーズに対して少し多すぎます。


これは私が書いたものです。
abyx 09

うーん、これは変です。それはちょうど私の脳を介してフィルタリングされました。ごめんなさい。いずれにせよ、srvanyはこの状況で行うのに最適なようです。
シャイレント2009

srvanyは2008年に動作します(これを使用して、Winamp.exeをホームサーバー上のサービスとしてインストールおよび実行します)...しかし、batファイルだけを実行することはできません。
オスカーデューブボーン2009

24

NSSMを使用して、.BATまたは古い.EXEファイルをサービスとして実行します。これは、SRVANYにほぼ置き換わるものであり、簡単なアプリケーションです。

http://iain.cx/src/nssm/

私はあなたと同じ問題を抱えていましたが、NSSMだけが機能するユーティリティでした。


3
これについて聞いたことがありませんでしたが、貴重なツールのようです。ヒントをありがとう。
スカイホーク

私のために働いてくれてありがとう。私はまだ指定された時間にサービスを停止するオプションを探していますが。
アンキット

8

タスクスケジューラを使用して、コンピューターが起動するたびにタスクを実行します(ユーザーがログインしているかどうかに関係なく)


1
ウィンドウを非表示にするには、これを読むか、システムとして実行して満足していない場合はこれを読んでください
-JonnyRaa

7

.BATファイルまたは古い.EXEファイルをサービスとして実行することはできません。Windowsサービスは機能しません。あなたは、のようなユーティリティを使用することができます非吸いService Managerのサービスとして任意のプログラムを実行する(NSSM)またはMicrosoft社の非フリーSRVANYユーティリティが、あなたは、あなたが行動を停止することは非常に「優雅」を取得しないことがあります。


3

SCコマンドは、サービスに必要なレジストリエントリを追加するだけです。指定したファイルが有効なサービスexeでない場合は、サービスエントリに変換されません。


2

from:technetフォーラムのこの投稿:http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

ここで何をすべきか...

この投稿の時点では、Windows Server 2008リソースキットツールはありません。そのため、「Windows Server 2003リソースキットツール」から「srvany.exe」を取得し、Win2008サーバーの適切な場所にコピーします(例:C: \ Windows \ System32 \)。"sc"を使用して "srvany"を起動する新しいサービスを作成します(例:sc create MyService binPath = C:\ Windows \ System32 \ srvany.exe DisplayName = "My Custom Service")RegEditを使用して、「Parameters」キーを作成します。サービス(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \)サービス。(引用符は不要です。)

そして、それはそれを行う必要があります。

注:一部のアプリケーションは、設定をHKEY_LOCAL_MACHINEではなくユーザーハイブに保存するため、アプリケーションを実行して構成し、サービスをそのユーザーとして実行するように構成する必要があります。


2

これを試してください...それは私のために働いた..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"

私にとってもうまくいきませんでした!OPと同じエラー-タイムリーに起動しませんでした。
ラビンドラHV

同上-動作しませんでした。
Spedge

0

私はこのことにつまずいた。Bat_To_Exe_Converterというツールを次に示します。.batファイルを.exeファイルに変換するのは非常に簡単です。それを試してみてください。最初にダウンローダーをダウンロードすると、Bat_To_Exe_Converterが自動的にダウンロードされます。.exeを介して.batファイルを実行するサービスを作成するのに本当に役立ちました。 http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


サーバー障害へようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
スコットパック


0

財布に手を伸ばすことができない他の2つのオプションを見つけました。

あなたは持つことができますsc立ち上げsrvany、その後、あなたのプログラムを指します。(StackOverflowで行っているのにここに十分な担当者がいないのでリンクできないフォーラム投稿があります-つぶやき)

元のポスターが使用した手順は次のとおりです。

  1. sc起動する新しいサービスを作成するために使用しますsrvany(例sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service"
  2. RegEditの使用:Parametersサービスのキーを作成します(例HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\
  3. RegEditの使用:新しく作成されたParametersキー内で、という文字列値を作成Applicationし、サービスとして実行するアプリケーションへのフルパスを入力します。(引用符は不要です。)

ちょっとしたハックのように思える場合は、.NETサービスを構築してプロセスを起動できます。いくつかの手順をスキップしたい場合は、一般的なプロセスを起動できるオープンソースの.NETサービスを以下に示します。

http://www.codeproject.com/KB/system/xyntservice.aspx

ニーズに合わせて微調整しますが、すぐに使用できるほとんどの機能を実行します。


そして、あなたが言及したsrvanyは、Win2k8のサポートされているバージョンを持たないWin2k3からのものです。
-LarsH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.