2012-02-18 19 views
6

Windows 2003サーバーでプログラムがクラッシュした場合、自動的にプログラムを起動できますか?ときどき私のプログラムがクラッシュすることがあります。設定できるウィンドウや設定には方法がありますか?Windowsでクラッシュした場合にプログラムを自動的に再起動する方法はありますか?

+1

どのようなプログラムですか? Windowsサービスまたは通常のアプリですか? –

+0

うーん、 "ときどき私のプログラムがクラッシュする"。なぜプログラムがクラッシュし、それを修正するのかを理解することが、より良いアプローチのようです。体が自己治癒しているので、バンドエイドは素晴らしいです。あなたのプログラムではそうではありません。 –

+0

もちろん、プログラムをクラッシュさせたくありません。それは努力するのに最適な理想です。しかし、最も強力なプログラムでさえ、時折クラッシュする可能性があります。サーバー環境にいる場合は、クラッシュが発生したときに再起動するのが大変です。クラッシュをログに記録して削除することもできますが、クラッシュするたびにダウンタイムが長くなることなく、ユーザーの幸せが増します。 – aggieNick02

答えて

7

普通の方法は、ガーディアンプロセスを実行することです。これは、メインプロセスの状態を監視する別のプロセスであり、多くの場合サービスです。ガーディアンは、メインサービスが亡くなったことを検出すると、メインサービスを再起動します。

私の知る限りでは、これを行うためのWindows機能は組み込まれていません。

+2

サービスの組み込み機能、[リカバリ]タブ。 –

+2

私はむしろ、「プログラム」という言葉の使用は、その質問がデスクトッププログラムに関するものであることを暗示していると想像しました。 –

+0

ナー、サービスは本当に血まみれのexeです。ユーザを制御し続けるための慣習のちょうど2つ。 –

1

Windowsでは、クラッシュしたときに通常のプログラムを自動的に再起動する設定はありません。

アプリケーションのGUIと積極的にやりとりする必要はありますか? Service Wrappers(Windowsサービスとしてアプリケーションを実行するように設計されている)の一部は、アプリケーションを監視して失敗した場合に再起動しますが、Session 0 Isolationを調べて確実に実行されないようにしてください。

1

BDV SystemEventsなどの特別なアプリを使用することができます。別のアプリケーションが閉じられている場合に起動されるアプリケーションを指定することができます。条件とアクションと同じアプリケーションを指定すると、期待どおりの結果が得られます。

3

注意:自己ループ型のbatファイルを実行すると便利ですが、何をしているのか分からなければ、あらゆる種類の混乱を招く可能性があります。これは、起動時に実行すると特に効果的です。あなたは警告されています。

とにかく。 BATファイルで多くのことをしていた286日のことを思い出しました。あなたはファイル

yourprogram.exe 
some other event 

を記述する場合BATファイルはyourprogramを実行し、一時停止して、プログラムが終了するまで、バックグラウンドで周りお待ちしております。その後、「別のイベント」が実行されます。一度に複数のものを実行したいのであれば、これは厄介なものでしたが、実際は役に立ちました。これを使用すると、終了するとすぐにプログラムを再起動して(batファイルを再実行する)ループを実行させることができます。これをhttps://superuser.com/questions/62525/run-a-completly-hidden-batch-fileと組み合わせると、それが起こることは決して見られません。それについてです

c:\[location]\yourprogram.exe 
wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat" 

最終BATファイル(この例では "restart.batは")のようになります。

ああ、ループを止めたいのであれば、単にbatファイルの名前を変更するか、または "/"を入力するだけです。/"を2行の前に置き、保存してプログラムを終了します。

実行しているプログラムに管理者権限が必要な場合は、psexec(http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)を使用してプログラムとbatを昇格された権限で実行していました。そして、あなたが管理者としてバットを実行する、または昇格した権限でタスクスケジューラから(PSEXEC部分なし)は、第2のラインを実行

c:\[location]\psexec -h c:\[location]\yourprogram.exe 
c:\[location]\psexec -h wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat" 

:その場合、BATは次のようになります。BEWARE:通常のユーザーとして実行し、UACプロンプトで「いいえ」をクリックするとBSODが表示されました。これはおそらく「数百万回などの特権がないためプログラムを実行できません」という意味です。

+1

ニースのコンセプト。バッチファイルとinvisible.vbsを避けることもできますし、代わりに1つのVBScriptで行うこともできます: '計算機を開いたままにする objShell = WScript.CreateObject( "WScript.Shell")を設定する ObjShell.run "calc.exe" 1、true ObjShell.run(Wscript.ScriptFullName) – Jimadine

1

私は似たようなものを探していました。これには2つのオプションがあります。あなた自身で小さなスクリプトを書くことも、既に存在するものを使うこともできます。

私はこのグッドlistを見つけたいくつかのグーグルの後。ブロガーは、クラッシュまたはクローズされたアプリケーションを自動的に再起動するための約8つのツールをコンパイルしています。アプリケーションが ではありません。

1

あなたはRegisterApplicationRestart.

「あなたは、再起動のために登録して、アプリケーションが 未処理の例外が発生したか、応答しない場合、ユーザーはアプリケーションを再起動する 機会が提供されています使用することができますユーザーの同意なしに自動的に再起動します」

ユーザーの介入なしで自動再起動する場合は、RestartOnCrashもあります。すべてのWindowsバージョンで動作します。

関連する問題