none
タスクスケジューラーから起動されたプロセス内で、どのトリガーかを判別できるか? RRS feed

  • 質問

  • お世話になります。

    タスクスケジューラーのインターフェイスを利用したアプリを作ろうと考えています。

    タスクスケジューラー経由で起動されたプロセス内で、どのトリガーによって実行されたかを判別することは可能なのでしょうか?

    実行するプロセスには、コマンドライン経由でタスクの識別子(IRegisteredTask::Path に相当するもの)を渡します。

    本当はトリガーの識別子もコマンドラインで渡したいのですが、コマンドラインはタスクに紐づく属性なので、渡す方法はわかっていません。

    起動されたプロセスの側で、IRunningTaskを得ることはできそうです。

    ITrigger::Id

    This identifier is used by the Task Scheduler for logging purposes.

    とありますので、これがイベントログ(Microsoft-Windows-TaskScheduler/Operational)に出力されるのであれば、そちら経由で取得できるかとも思ったのですが、今のところ、このIdがイベントログに出ているのを見たことがありません。

    最後の手段としては、タスクに紐づく全てのトリガーを列挙し、その起動時刻と現在時刻を比較して、違いが何秒以内であれば、そのトリガーだと判定するという方法も考えてはいますが、もっと確度の高い方法がないものかと思っております。

    何か手がかりをお持ちでしたらご教示頂けませんでしょうか。

    よろしくお願いいたします。


    αετος(aetos)

    2012年6月11日 9:07