私のEXEを実行するWindowsのスケジュールされたタスクがある場合。EXE 内から、トリガーされたスケジュールされたタスク インスタンスを見つける方法はありますか?
2 に答える
それに対する簡単な答えは、いいえです。
あなたができる最善のことは、プログラムでタスクスケジューラライブラリにアクセスし、プロセスが「実行中」モードであるかどうかを確認し、プロセスのPIDを取得して(スケジューラは実際に履歴に書き込みます)、それを比較します。
もっと簡単なのは、システム イベント ログにアクセスして、exe ファイルの実行に関する言及があるかどうかを確認することです (ただし、exe が実際に実行された場合は、そのようなログではない可能性があります)。
プロセスに関連付けることができる唯一のものは、スケジュールされていることに関する情報を提供しない呼び出し元 (NETWORK SERVICE またはいくつかの事前定義されたアカウントである可能性があります) です。
この同じ問題を解決するためにしばらく試みましたが、現在の API を使用してそれが可能だとは思いません。実行中のタスクへの参照がある場合は、それを開始したタスク エンジンの PID を取得できます。そこから、タスク イベント ログに移動し、同じエンジン PID を持つ ID 200 (アクション開始) の最新のイベントを検索できますが、単一のタスク エンジンの下で複数のタスク プロセスを実行できるため、確実に先に進みます (たとえば、プロセスの 2 番目のインスタンスが同じエンジン PID で実行されている可能性があります。どの相関 ID がターゲット プロセスに属しているかはわかりません)。