私が知っている唯一のことは、そのサービスが実行されているかどうかを監視する別のアプリケーションまたはサービスを作成することです。そのようなものは、予期しない動作をして停止するべきではありません。
もう 1 つ行うべきことは、Windows のサービスに移動し、そのプロパティに移動してから、回復オプションに移動することです。ここから、サービスが失敗した場合の動作を設定できます。Windows 7 のオプションは、サービスまたはコンピューターを再起動するか、プログラムを実行することです。このプログラムは、何らかの通知を送信できます。ただし、これらのオプションの一部またはすべてが Server 2003 に存在するかどうかはわかりません。これは、サービスが単にハングした場合にも機能しない可能性がありますが、サービスを監視しているサービスも機能しない可能性があります。
また、ソース コードがある場合は、OnStop()
(C# の場合) などのサービス関連のメソッドの一部をオーバーライドして通知を送信することもできますが、これが失敗してもうまくいくとは思いません。
私の個人的な選択は、繰り返し失敗しない限り、失敗時にサービスを再起動するための回復オプションを設定することです。これにはオプションもあります。ただし、自分に最適だと思うことをしてください。それを行うためのフェイルセーフな方法は実際にはありません。
更新: 確認したところ、Server 2003 のサービス マネージャーには実際に同じ回復オプションがあります。上記の人たちが言ったように、あなたはそれを扱うことができますが、私が見たものからはC++でのみです。それを行うコマンドプロンプトの方法もあります:
sc failure [servicename] reset= 0 actions= restart/60000
そのコマンドはこちらで見つかりました。詳細については、MSDNのドキュメントを参照してください。C++ を使用していない場合は、C# または他の言語からこのコマンドを呼び出すことができます。ソース コードがない場合は、コマンド プロンプトから直接使用できます。