列出在启动时登录的计划任务和登录c#

时间:2013-05-12 15:59:35

标签: c# scheduled-tasks startup winlogon

我正在使用http://www.codeproject.com/KB/cs/tsnewlib.aspx库列出在登录或启动时触发的任务

ScheduledTasks st = new ScheduledTasks();

            foreach (string taskName in st.GetTaskNames())
            {
                using (Task task = st.OpenTask(taskName))
                {

                        listBox1.Items.Add(taskName);

                }
            }

我应该使用什么条件来仅列出启动或登录任务

1 个答案:

答案 0 :(得分:1)

您需要为每个Triggers枚举task,并对该任务执行某些操作,将其存储以供日后使用,或将该名称存储在已过滤的Task对象名称列表中。您的选择过程是检查TriggerOnLogonTrigger还是OnSystemStartTrigger,然后您可以将该任务选入最终列表。

e.g。

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个触发器。