如何使用SCHTASKS以编程方式删除计划任务?

时间:2016-10-10 13:35:19

标签: java scheduled-tasks

我创建了一个计划任务,然后尝试使用我开发的java方法删除它:

public void deleteTask() throws IOException, InterruptedException{
    List<String> commands = new ArrayList<String>();
    commands.add("schtasks.exe");
    commands.add("/DELETE");
    commands.add("/S");
    commands.add("\"ws-abacus\"");
    commands.add("/TN");
    commands.add("\"Task123\"");
    commands.add("/F");
    ProcessBuilder builder = new ProcessBuilder(commands);
    Process p = builder.start();
    p.waitFor();
}

运行上面的方法说ERROR: Access is denied.

我尝试通过传递命令也使用命令提示符删除 schtasks /delete /S ws-abacus /TN Task123 /F但抛出相同的访问被拒绝消息。

更改计划任务操作也是如此。 我能够从任务计划程序UI中删除和更改,但不能从命令或代码中删除和更改。 请建议如何以编程方式完成此操作。

操作系统:Win7 64位。

1 个答案:

答案 0 :(得分:0)

问题是因为您没有使用提升的访问权限打开命令提示符。尝试通过右键单击它并“以管理员身份运行”打开命令提示符。然后执行你的命令。它会正常工作。

对于java程序,您需要通过提升访问模式运行命令。请执行以下操作。

1)创建快捷方式,将命令提供为cmd / c schtasks / delete / S ws-abacus / TN Task123 / F. (右键单击New-&gt;快捷方式。向导将询问“输入项目的位置”。现在提供上述命令。单击“下一步”。根据需要命名快捷方式。我将其命名为cmd) 2)右键单击快捷方式&gt;属性并选择高级并选中“以管理员身份运行”。 3)然后在java程序中执行如下的快捷方式。我在C:

中保留了名为cmd.lnk的快捷方式
public static void main(String a[]) throws IOException, InterruptedException
{
    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd /c start \"\" \"c:\\cmd.lnk\"");
}

然后一切都应该正常。希望这会有所帮助。