C# - 如何使用任务计划程序类列出特定用户的计划任务

时间:2011-06-25 12:23:58

标签: c# .net windows

我想知道是否有人可以帮助我,我正在尝试使用TaskScheduler类(http://www.codeproject.com/KB/cs/tsnewlib)列出本地计算机上特定用户(Admin)的计划任务.aspx)我有以下内容:

    // richTextBox6.Text = string.Join(Environment.NewLine, taskNames);
    private void button22_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear();
        string machineName = (@"\\" + System.Environment.MachineName);
        ScheduledTasks st = new ScheduledTasks(machineName);
        // Get an array of all the task names
        string[] taskNames = st.GetTaskNames();
        foreach (var taskName in taskNames)
        {
            listBox1.Items.Add(taskName);
        }

        st.Dispose();
    }

“@”\“”指定本地计算机是目标计算机,但是可以将用户添加到此计算机中吗? (因为它只列出执行时在C:\ Windows \ Tasks中的任务)

3 个答案:

答案 0 :(得分:2)

在执行查询时似乎没有办法指定用户名(仅限计算机名称),但您可以使用Creator属性自行过滤结果:

foreach (string taskName in st.GetTaskNames()) {
    using (Task task = st.OpenTask(taskName)) {
        if (task.Creator == "username") {
            listBox1.Items.Add(taskName);
        }
    }
}

答案 1 :(得分:2)

这仅适用于为Windows 2003,XP,Windows 2000创建和配置的任务。

如果选择Windows 7,Windows 2008或Windows Vista,Windows 2008,则.job目录中的作业不会以C:\Windows\Tasks扩展名存储。它们存储在C:\Windows\System32\Tasks目录中,没有文件扩展名和XML格式。

DLL无法检索为Windows 7,Windows Vista,Windows 2008配置的那些。

答案 2 :(得分:0)

我怀疑你能做到这一点。 windows任务对所有用户都是常见的,如果我错了请纠正我。但是您可以获得创建的perticuler任务用户,或者您将能够获得特定计算机的执行用户。

但是当涉及到不同的操作系统时,这会有所不同。比如windows 7 windows xp。