Task Scheduler Managed Wrapper 不显示所有任务
Task Scheduler Managed Wrapper does not show all tasks
我创建了一个简单的 Windows 表单应用程序,它显示计算机上所有计划任务的名称和文件夹。我正在使用 Task Scheduler Managed Wrapper (Microsoft.Win32.TaskScheduler),下面是获取名称并显示它们的代码。然而,似乎 AllTasks 实际上并没有给我所有任务。有一些没有显示。在这种情况下,什么会导致任务被隐藏?
using (TaskService tsksrvs = new TaskService())
{
foreach (Task tsk in tsksrvs.AllTasks)
{
textJobsList.Text += tsk.Name + " (" + tsk.Folder + ")" + Environment.NewLine;
}
}
正如@nvoigt 在上面指出的那样,不可见的任务是 运行 作为与执行代码的用户不同的用户。
属性AllTasks
对象Microsoft.Win32.TaskScheduler.TaskService
returns只有Windows调度任务所在任务的 .Definition.Principal.UserId
是
用户运行程序或系统或网络服务或本地服务或为空。顺便说一下,属性 Definition.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);
}
我创建了一个简单的 Windows 表单应用程序,它显示计算机上所有计划任务的名称和文件夹。我正在使用 Task Scheduler Managed Wrapper (Microsoft.Win32.TaskScheduler),下面是获取名称并显示它们的代码。然而,似乎 AllTasks 实际上并没有给我所有任务。有一些没有显示。在这种情况下,什么会导致任务被隐藏?
using (TaskService tsksrvs = new TaskService())
{
foreach (Task tsk in tsksrvs.AllTasks)
{
textJobsList.Text += tsk.Name + " (" + tsk.Folder + ")" + Environment.NewLine;
}
}
正如@nvoigt 在上面指出的那样,不可见的任务是 运行 作为与执行代码的用户不同的用户。
属性AllTasks
对象Microsoft.Win32.TaskScheduler.TaskService
returns只有Windows调度任务所在任务的 .Definition.Principal.UserId
是
用户运行程序或系统或网络服务或本地服务或为空。顺便说一下,属性 Definition.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);
}