6

我创建了一个简单的 Windows 窗体应用程序,它显示机器上所有计划任务的名称和文件夹。我正在使用任务计划程序托管包装器 (Microsoft.Win32.TaskScheduler),下面是获取名称并显示它们的代码。但是,似乎 AllTask​​s 实际上并没有给我所有任务。有一些没有显示。在这种情况下,什么可能导致任务被隐藏?

using (TaskService tsksrvs = new TaskService())
{
    foreach (Task tsk in tsksrvs.AllTasks)
    {
        textJobsList.Text += tsk.Name + " (" + tsk.Folder + ")" + Environment.NewLine;
    }
}
4

2 回答 2

7

AllTasks该对象的属性Microsoft.Win32.TaskScheduler.TaskService返回Windows 计划程序任务,其中任务是运行程序的用户系统网络服务本地服务为空。顺便说一句,财产有什么价值并不重要。.Definition.Principal.UserIdDefinition.RegistrationInfo.Author

如果您需要为所有用户获取所有任务,您可以通过以下代码完成它:

using Microsoft.Win32.TaskScheduler;
using System.Diagnostics;
using System.Text.RegularExpressions;
......................................
                Task[] allTasks = TaskService.Instance.FindAllTasks(new Regex(".*")); // this will list ALL tasks for ALL users
                foreach (Task tsk in allTasks)
                {
                    //Do whatever you need here, for example:
                    Debug.WriteLine("TaskName:{0}; Path:{1}; Author:{2}; Principal: {3}; ", tsk.Name, tsk.Path, tsk.Definition.RegistrationInfo.Author, tsk.Definition.Principal.UserId);
                }
于 2017-01-25T20:28:32.380 回答
3

正如@nvoigt 上面指出的那样,不可见的任务正在以与执行代码的用户不同的用户身份运行。

于 2016-05-11T07:46:15.730 回答