2009-08-17 6 views
0

コマンドラインで渡されたさまざまな構成ファイルで複数回起動されるサービスプログラムを実行しています。 プログラムは、Windowsサービスとして実行されている制御プログラムによって開始されます。このサービスは、プログラムを監視して再起動できる必要があります。 現時点では、制御プログラムがクラッシュしたときに問題が発生しました。サービスプログラムのすべてのインスタンスを起動できません。実行されているインスタンスと実行されていないインスタンスを検出できません。コード内で複数のプロセスを開始し、コマンドライン引数で区別してください。

System.Diagnostics.Process APIとWMI APIを使用していくつかの情報を取得しようとしました。 しかし、両方の変種では、コマンドライン引数は利用できません。

インスタンスを開始するには、System.Diagnostics.ProcessのStartInfoオブジェクトを使用しています。私はどこかでstackoverflowでStartInfoオブジェクト内のプロセス情報が別のプロセスで利用できないが、WMI APIで利用できるはずですが、私の場合はそうではありません。

インスタンスを別の方法実行中のプロセスのコマンドライン引数にアクセスする別の方法があります

+0

これらの他のプログラムはあなたのコントロール下にありますか?プロセスを開始するコマンドラインがそのプログラムの起動時にも生き残るということは、Windowsでは保証されていないので(利用できない) –

+0

私は通常、プロセスとそのコマンドラインを管理するためにWMIを使用します。 – lsalamon

+0

@Damien - はい、それは主要な問題かもしれませんが、コマンドラインは99%でWMIクエリで読み込み可能です。 – mabu

答えて

0

この設定をSystem.Management名前空間を使用するように変更しました。これで、プロセスが検出されて一覧表示されます。しかし、私は正規表現を使用してコマンドライン全体を処理しなければなりません。それはそれに関する唯一の "悪い"ものです

関連する問題