【发布时间】:2012-06-16 05:02:43
【问题描述】:
如果我有一个运行我的 EXE 的 Windows 计划任务。有没有办法从我的 EXE 中找到触发我的计划任务实例?
【问题讨论】:
标签: c# scheduled-tasks
如果我有一个运行我的 EXE 的 Windows 计划任务。有没有办法从我的 EXE 中找到触发我的计划任务实例?
【问题讨论】:
标签: c# scheduled-tasks
对此的简单回答是:不。
您可以做的最好的事情是以编程方式访问任务调度程序库并查看您所在的进程是否处于“运行”模式,获取进程的 PID(调度程序实际上将其写入其历史记录)并将其与你的。
更容易做的事情是访问系统事件日志并查看是否有任何提及执行您的 exe 文件(尽管如果实际执行了 exe,它们可能不是这样的日志)。
您唯一可以与您的流程相关联的是调用者(可能是网络服务或一些预定义的帐户),它不提供任何有关它被调度的信息。
【讨论】:
我尝试了一段时间来解决同样的问题,但是我认为使用当前的 API 是不可能的。如果您有对正在运行的任务的引用,您可以获得启动它的任务引擎的 PID。从那里,您可以转到任务事件日志并查找具有相同引擎 PID 的 ID 为 200(操作已启动)的最新事件,但是因为您可以在单个任务下运行多个任务进程任务引擎,你不能绝对确定地走得更远(例如,你的进程的第二个实例可能在同一个引擎 PID 下运行——你将无法判断哪个相关 ID 属于你的目标进程。)
【讨论】: