在过去几天里,我已经做了很多关于检查是否存在计划任务的搜索,如果存在,<insert awesome here>
。基本上我有一个安装和卸载我们软件的计划任务的应用程序。我现在需要做的是,如果任务在那里,则选中一个复选框,如果不是,则取消选中。有人提到使用:
ScheduledTasks st = new ScheduledTasks(server);
string[] taskNames = st.GetTaskNames();
List<string> jobs = new List<string>(taskNames);
这对我不起作用,它声明无法找到ScheduledTasks命名空间。我相信我有我需要安装的东西。 “使用Microsoft.Win32.TaskScheduler;”
答案 0 :(得分:4)
我在这个包装器中没有看到这个ScheduledTasks。
TaskScheduler Managed Wrapper使用服务惯用法,您需要拥有文件夹的上下文。
他们在documentation中有很好的例子,包括enumerating all tasks的一个例子。
如果您想查找特定任务:
var t = taskService.GetTask(scheduledTaskName);
bool taskExists = t!=null;
if(taskExists) DoYourThing();
如果您的任务在文件夹中,请使用以下内容
var t = taskService.GetTask(taskFolder + "\\" + scheduledTaskName);
答案 1 :(得分:3)
要添加到Dove的答案(我还没有代表评论),您还可以使用TaskScheduler的FindTask方法,它允许您忽略使用名称指定子文件夹如果您通过传递“True”作为第二个参数在子文件夹中启用搜索;例如。
using ( TaskService sched = new TaskService() ) {
var task = sched.FindTask( "UniqueTaskName", true );
if ( task != null ) {
...
}
}