お世話になります。
タスクスケジューラーのインターフェイスを利用したアプリを作ろうと考えています。
タスクスケジューラー経由で起動されたプロセス内で、どのトリガーによって実行されたかを判別することは可能なのでしょうか?
実行するプロセスには、コマンドライン経由でタスクの識別子(IRegisteredTask::Path に相当するもの)を渡します。
本当はトリガーの識別子もコマンドラインで渡したいのですが、コマンドラインはタスクに紐づく属性なので、渡す方法はわかっていません。
起動されたプロセスの側で、IRunningTaskを得ることはできそうです。
ITrigger::Idは
This identifier is used by the Task Scheduler for logging purposes.
とありますので、これがイベントログ(Microsoft-Windows-TaskScheduler/Operational)に出力されるのであれば、そちら経由で取得できるかとも思ったのですが、今のところ、このIdがイベントログに出ているのを見たことがありません。
最後の手段としては、タスクに紐づく全てのトリガーを列挙し、その起動時刻と現在時刻を比較して、違いが何秒以内であれば、そのトリガーだと判定するという方法も考えてはいますが、もっと確度の高い方法がないものかと思っております。
何か手がかりをお持ちでしたらご教示頂けませんでしょうか。
よろしくお願いいたします。
αετος(aetos)