你如何指定计划任务的创build地点?

在SCHTASKS中是否有一个选项来定义实际创build预定作业的位置?

而不是调用SCHTASKS我build议使用围绕COM类TaskScheduler的.Net包装,通过它可以与Windows任务计划程序进行交互。 它需要更多的代码,但提供了丰富的属性和对任务的良好控制。 这样做可以使用ITaskFolder为您的任务创build文件夹。 我在下面使用了代码(这将在文件夹“MyTaskFolder”中创build一个名为“MyTaskName”的任务),同时查看这篇文章以获取有关该主题的更多信息 。

  TaskScheduler.TaskScheduler scheduler = new TaskScheduler.TaskScheduler(); scheduler.Connect(null, null, null, null); //run as current user. ITaskDefinition taskDef = scheduler.NewTask(0); taskDef.RegistrationInfo.Author = task.TaskAuthor; ... ITimeTrigger trigger = (ITimeTrigger)taskDef.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME); ... IExecAction action = (IExecAction)taskDef.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC); ... ITaskFolder root = scheduler.GetFolder("\\"); root.CreateFolder("MyTaskFolder"); //// here IRegisteredTask regTask = root.RegisterTaskDefinition( "MyTaskName", taskDef, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, // user null, // password _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, //User must already be logged on. The task will be run only in an existing interactive session. "" //SDDL ); 

请注意,如果该文件夹已经存在,这将引发exception。 Ypu可以使用可用的文件夹

 ITaskFolderCollection folders = root.GetFolders(0); 

只需在任务名称string( /TN参数)中使用path名称即可。 例如, /TN Foo\Bar将在Foo文件夹中创build一个名为Bar的任务。