私のプロセスはどのようにして終了しましたか?
-
09-06-2019 - |
質問
Windows 上の C# から、プロセスがどのように停止されたかを確認する方法はありますか?見てきました プロセス クラス、設定するとExitedイベントからフレンドリーなコールバックを取得することができました EnableRaisingEvents = true;
しかし、プロセスが強制終了されたのか、それとも自然に終了したのかを知ることができませんでした。
解決
Process Monitor (Microsoft の一部である Sysinternals から提供) を起動し、プロセスを実行して終了させます。その後、Process Monitor の結果をプロセス名でフィルター処理します。終了コードを含め、プロセス モニターが実行したすべての内容を確認できるようになります。
他のヒント
そのためには、プロセスのリターンコードを使用できます。プロセスが Main メソッドからゼロ以外の値を返した場合は、プロセスが自動的に終了したかどうか (戻り値が一致するかどうか) を確認できます。
素晴らしい答えです、アントワーヌ、残念ながら戻りコードを変更することはできません。悪いのですが、質問の範囲を絞る必要があるようです。
現実的には、プログラムによる解決策も必要ないと思います - ユーティリティで十分でしょう - 印象的な外観を見てきました プロセスエクスプローラー しかし、それは私にこれらの詳細を与えないようです。
私が抱えている問題は、調べたいプログラムが Windows のスケジュールされたタスクに相当するスケジュール システムによって実行されているということですが、そうではありません。スケジューラがプログラムを強制的に停止しているかどうかを検出する方法はありますか?