如何指定创建计划任务的位置?

如何指定创建计划任务的位置?

在 SCHTASKS 中是否有一个选项可以定义计划作业的实际创建位置?

答案1

我建议不要调用,而是SCHTASKS使用 .Net 包装器来包装 COM 类TaskScheduler,通过它您可以与 Windows 任务计划程序进行交互。它需要更多的代码,但提供了一组丰富的属性和对任务的良好控制。这样做可以用来ITaskFolder为您的任务创建文件夹。我在下面列出了我使用的部分代码(它将在文件夹“MyTaskFolder”中创建一个名为“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
        );

请注意,如果文件夹已存在,这将引发异常。您可以使用以下方法获取可用文件夹

ITaskFolderCollection folders = root.GetFolders(0);

答案2

只需在任务名称字符串(参数)中使用路径名即可/TN。例如,/TN Foo\Bar将在 Foo 文件夹中创建一个名为 Bar 的任务。

相关内容