のCodePlexで見つけTaskSchedulerのマネージラッパーがあります。
とタスクを列挙することが可能であるラッパーを使用して:
using System;
using Microsoft.Win32.TaskScheduler;
namespace ListTasks
{
class Program
{
static void EnumFolderTasks(TaskFolder fld)
{
foreach (Task task in fld.Tasks)
DisplayTask(task);
foreach (TaskFolder sfld in fld.SubFolders)
EnumFolderTasks(sfld);
}
static void DisplayTask(Task t)
{
Console.WriteLine("Task: {0, -60} Active: {1, -5} Enabled: {2, -5}",
t.Name, t.IsActive, t.Enabled);
}
static void Main(string[] args)
{
using (TaskService ts = new TaskService())
{
EnumFolderTasks(ts.RootFolder);
}
}
}
}
同上かどうかのは、ステータス、時間、期間を開始し、位置情報が利用可能ですが、私はよく分かりません。
しかし、タスクの定義を見て、それが多くの情報が含まれず、一目見ただけで、その情報のほとんどが利用可能であると思わないオブジェクト:
EDIT:追加の名前空間タスクについていくつかの混乱を除去するためにオブジェクト。
namespace Microsoft.Win32.TaskScheduler
{
public class Task : IDisposable
{
public TaskDefinition Definition { get; }
public bool Enabled { get; set; }
public TaskFolder Folder { get; }
public bool IsActive { get; }
public DateTime LastRunTime { get; }
public int LastTaskResult { get; }
public string Name { get; }
public DateTime NextRunTime { get; }
public int NumberOfMissedRuns { get; }
public string Path { get; }
public bool ReadOnly { get; }
public GenericSecurityDescriptor SecurityDescriptor { get; set; }
public virtual TaskState State { get; }
public TaskService TaskService { get; }
public string Xml { get; }
public void Dispose();
public void Export(string outputFileName);
public TaskSecurity GetAccessControl();
public TaskSecurity GetAccessControl(AccessControlSections includeSections);
public RunningTaskCollection GetInstances();
public DateTime GetLastRegistrationTime();
public DateTime[] GetRunTimes(DateTime start, DateTime end, uint count = 0);
public string GetSecurityDescriptorSddlForm(SecurityInfos includeSections = SecurityInfos.Owner | SecurityInfos.Group | SecurityInfos.DiscretionaryAcl);
public void RegisterChanges();
public RunningTask Run(params string[] parameters);
public RunningTask RunEx(TaskRunFlags flags, int sessionID, string user, params string[] parameters);
public void SetAccessControl(TaskSecurity taskSecurity);
public void SetSecurityDescriptorSddlForm(string sddlForm, TaskSetSecurityOptions options = TaskSetSecurityOptions.None);
public void ShowPropertyPage();
public void Stop();
public override string ToString();
}
}
おそらくそれを行うことはできません。 – SLaks
Visual Studioは明らかにできるので、可能だと思います。それはちょっと卑猥なP/Invoke、COMラッピング、Roslynマジック、またはMicrosoft.Diagnostics.Runtimeプロジェクトを必要とするかもしれません。 – AkselK
何かあれば、デバッガが必要です(別のプロセスでなければなりません) – SLaks