2014-11-15 4 views
0

자정에 매일 실행되는 Windows 응용 프로그램의 설치 프로그램을 만들고 있습니다. 나는 모든 파일을 설치 한 후 다음 명령을 실행하여 작업을 예약하려고 시도하고있다 : I 설치 프로그램을 실행했을 때"액세스 거부"메시지를받지 않고 설치 관리자를 통해 schtasks.exe를 사용하여 작업을 예약하는 방법은 무엇입니까?

schtasks.exe /create /tn "My Task Name" /xml "path/to/file.xml" 

그러나, 작업이 생성되지 않았다. 나는 명령 프롬프트를 열고 무엇이 잘못되었는지 직접 명령에 입력 해 보았습니다. 내가받은 유일한 결과는 ERROR: Access is denied.이었습니다. 다른 사용자의 제안을 따르고 /ru 스위치를 추가했지만 올바른 암호를 입력 한 후에도 여전히 액세스 권한을 받았습니다. 거부 된 오류 메시지. SubInACL이라는 프로그램을 사용하여 레지스트리를 수정하는 작업이 포함 된 this answer,을 발견했습니다.하지만이 작업은 모든 최종 사용자의 컴퓨터에서 설치되고 실행되어야하므로 나쁜 생각 일 것입니다. 첫 번째 장소. 명령 줄을 통해 작업을 예약하는 다른 방법이 있습니까, 아니면 작업 스케줄러가 아닌 다른 것을 사용해야합니까?

+0

작업 스케줄러에 작업을 만들려면 관리자 권한이 있어야하며 실패를 찾으려고 할 때 명령 프롬프트를 올리는 것을 잊었을 것입니다 (따라서 * 액세스 거부 * 오류). 그렇다면 명령 프롬프트를 올리면 다음 번에 문제를 검사 할 수 있습니다. 하지만 설치 프로그램에 설정 권한이 있습니까? 그렇다면'[Code]'섹션에서 명령 줄을 실행하고'schtasks.exe'가 반환 한 오류 코드를 검사 할 수 있습니다. – TLama

+0

그래, 그게 다야. 내 설정은 관리자 권한으로 실행되므로 [코드] 섹션으로 이동했는데 완벽하게 작동했습니다. 당신의 도움을 주셔서 감사합니다. –

+0

내 충고가 문제를 조사하려고했으나, 도움이된다면 환영합니다 :) 환영합니다! 그리고 사용 해본 솔루션을 사용하여 답변을 게시하고 수락하십시오. – TLama

답변

0

좋아요, 문제는 [Run] 섹션에서 schtasks.exe를 실행하면 관리자 수준으로 올라 가게되지 않는 문제였습니다. [Code] 섹션에서 Exec() 함수를 사용하여 문제를 해결 한 관리자 권한으로 실행하게했습니다.