2013-05-12 50 views

回答

1

您需要为每个task列举Triggers,然后对该任务执行一些操作,将其存储起来以备后用,或将名称存储在已过滤的对象名称的列表中。您的选择过程是检查Trigger是否为OnLogonTriggerOnSystemStartTrigger,然后您可以将该任务选择到最终列表中。

例如

List<string> startupAndLogonTasks = new List<string>(); 
foreach (string taskName in st.GetTaskNames()) { 
    using (Task task = st.OpenTask(taskName)) { 
     if (task != null) { 
      foreach (Trigger tr in task.Triggers) { 
       if (tr is OnSystemStartTrigger || tr is OnLogonTrigger) { 
        // Do something, such as log the name, or store the task for later 
        startupAndLogonTasks.Add(task.Name); 
        // break out and move to the next task 
        break; 
       } 
      } 
     } 
    } 
} 

当然,如果你想要的只有登录或启动类型的任务,然后还要检查你只有Triggers收集1个触发。

+0

我有一个问题。问题是这只是在XP中的工作。此代码不工作在7.任何方式来解决这个问题? – grvpanchal 2013-05-12 17:44:24

+0

@grvpanchal。我不认为代码项目库在7中工作,因为它使用任务计划程序1.0 API已弃用 - ([见这里](http://msdn.microsoft.com/en-us/library/aa383614%28v = VS.85%29.aspx))。您可能需要一个关于Win 7中访问任务的新问题。 – 2013-05-12 18:00:52

+0

啊。好。所以你知道如何使用这个:http://taskscheduler.codeplex.com/ – grvpanchal 2013-05-12 18:11:03