2016-10-10 3 views
0

내가 예약 된 작업을 생성 한 후 내 개발 자바 방법을 사용하여 삭제하려고 한 : 방법 위에 실행프로그래밍 방식으로 SCHTASKS를 사용하여 예약 된 작업을 삭제하는 방법은 무엇입니까?

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(); 
} 

내가 명령 schtasks /delete /S ws-abacus /TN Task123 /F을 전달하여도 명령 프롬프트를 사용하여 삭제하려고했습니다 ERROR: Access is denied.

라고하지만, 동일한 액세스 거부 메시지가 발생했습니다.

동일한 작업은 예약 된 작업으로 발생합니다. 작업 스케줄러 UI에서는 삭제하고 변경할 수 있지만 명령이나 코드에서는 변경할 수 없습니다. 이 작업을 프로그래밍 방식으로 수행하는 방법을 제안하십시오.

OS : Win7 64 비트.

답변

0

상승 액세스로 명령 프롬프트를 열지 않았기 때문에 문제가 발생했습니다. 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행"명령 프롬프트를 열어보십시오. 그런 다음 명령을 실행하십시오. 그것은 잘 작동합니다.

Java 프로그램의 경우 상승 액세스 모드를 통해 명령을 실행해야합니다. 아래를 수행하십시오.

1) 바로 가기를 만들어 cmd/c schtasks/delete/S ws-abacus/TN Task123/F와 같은 명령을 제공하십시오. (새로 만들기 -> 바로 가기를 마우스 오른쪽 단추로 클릭하십시오.) 마법사가 "항목의 위치를 ​​입력하십시오."라는 메시지가 나타나면 위의 명령을 입력하십시오. 다음을 클릭하십시오. 원하는대로 바로 가기 이름을 지정하십시오.) cmd : 2) 바로 가기 -> 등록 정보를 마우스 오른쪽 버튼으로 클릭하고 고급을 선택하고 "관리자 권한으로 실행"을 선택하십시오. 3) 자바 프로그램에서 아래와 같이 바로 가기를 실행합니다. 나는 C로 cmd.lnk라는 내 지름길을 보관 :

public static void main(String a[]) throws IOException, InterruptedException 
{ 
    Runtime rt = Runtime.getRuntime(); 
    rt.exec("cmd /c start \"\" \"c:\\cmd.lnk\""); 
} 

그럼 모든게 잘 작동합니다. 희망이 도움이됩니다.

+0

그러나이 경우 작업 이름은 명령에 하드 코딩되어 있습니다. 내 시나리오에서 작업 이름은 동적이며 스윙 UI를 통해 전달됩니다. – Harsh

관련 문제