如何找到启动我的进程的计划任务的instanceid / correlation ID

时间:2012-04-18 18:02:46

标签: c# scheduled-tasks

如果我有一个运行我的EXE的Windows计划任务。有没有办法从我的EXE内部找到触发我的计划任务实例?

2 个答案:

答案 0 :(得分:3)

答案很简单:不。

您可以做的最好的事情是以编程方式访问任务调度程序库,并查看您的进程是否处于“运行”模式,获取进程的PID(调度程序实际上将其写入历史记录中)并将其与你的。

更容易做的事情是访问系统事件日志并查看是否有任何提及执行你的exe文件(尽管如果exe实际执行它们可能不是这样的日志)。

您唯一可以与您的流程相关联的是调用方(可能是NETWORK SERVICE或某些预定义帐户),它们不会提供有关计划的任何信息。

答案 1 :(得分:0)

我尝试了一段时间来解决同样的问题,但我不认为使用当前的API是可能的。如果您有对正在运行的任务的引用,则可以获取启动它的任务引擎的PID。从那里,您可以转到任务事件日志并查找具有相同引擎PID的ID 200(Action Started)的最新事件,但是因为您可以在单个下运行多个任务进程任务引擎,你不能绝对肯定地进一步(例如,你的进程的第二个实例可能在相同的引擎PID下运行 - 你将无法分辨哪个相关ID属于你的目标进程。)