6

マシン上でスケジュールされたすべてのタスクの名前とフォルダーを表示する単純な Windows フォーム アプリケーションを作成しました。私は Task Scheduler Managed Wrapper (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オブジェクトのプロパティは、タスクがプログラムを実行しているユーザー、システムネットワーク サービスローカル サービス、またはのいずれかである Windows スケジューラ タスクのみMicrosoft.Win32.TaskScheduler.TaskServiceを返します。ちなみに、物件の価値は問いません。.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 に答える