我创建了一个计划任务,然后尝试使用我开发的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位。
答案 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\"");
}
然后一切都应该正常。希望这会有所帮助。