ITaskFolder::RegisterTaskDefinition 메서드(taskschd.h)

ITaskDefinition 인터페이스를 사용하여 지정된 위치에 작업을 등록(생성)하여 작업을 정의합니다.

구문

HRESULT RegisterTaskDefinition(
  [in]           BSTR            path,
  [in]           ITaskDefinition *pDefinition,
  [in]           LONG            flags,
  [in]           VARIANT         userId,
  [in]           VARIANT         password,
  [in]           TASK_LOGON_TYPE logonType,
  [in, optional] VARIANT         sddl,
  [out]          IRegisteredTask **ppTask
);

매개 변수

[in] path

작업의 이름입니다. 이 값이 NULL이면 작업이 루트 작업 폴더에 등록되고 작업 이름은 작업 스케줄러 서비스에서 만든 GUID 값이 됩니다.

작업 이름은 공백 문자로 시작하거나 끝낼 수 없습니다. '.' 문자를 사용하여 현재 작업 폴더와 '.'을 지정할 수 없습니다. 문자는 경로에서 부모 작업 폴더를 지정하는 데 사용할 수 없습니다.

[in] pDefinition

등록된 작업의 정의입니다.

[in] flags

TASK_CREATION 상수입니다.

의미
TASK_VALIDATE_ONLY
0x1
작업 스케줄러는 작업을 설명하는 XML 구문을 확인하지만 작업을 등록하지는 않습니다. 이 상수는 TASK_CREATE, TASK_UPDATE 또는 TASK_CREATE_OR_UPDATE 값과 결합할 수 없습니다.
TASK_CREATE
0x2
작업 스케줄러는 작업을 새 작업으로 등록합니다.
TASK_UPDATE
0x4
작업 스케줄러는 작업을 기존 작업의 업데이트된 버전으로 등록합니다. 등록 트리거가 있는 작업이 업데이트되면 업데이트가 발생한 후 작업이 실행됩니다.
TASK_CREATE_OR_UPDATE
0x6
작업 스케줄러는 작업을 새 작업으로 등록하거나 작업이 이미 있는 경우 업데이트된 버전으로 등록합니다. TASK_CREATE | TASK_UPDATE.
TASK_DISABLE
0x8
작업 스케줄러는 기존 작업을 사용하지 않도록 설정합니다.
TASK_DONT_ADD_PRINCIPAL_ACE
0x10
작업 스케줄러는 컨텍스트 보안 주체에 대한 ACE(액세스 제어 허용 항목)를 추가할 수 없습니다. 작업을 업데이트하기 위해 이 플래그와 함께 ITaskFolder::RegisterTaskDefinition 함수를 호출하면 작업 스케줄러 서비스는 새 컨텍스트 보안 주체에 대한 ACE를 추가하지 않으며 이전 컨텍스트 보안 주체에서 ACE를 제거하지 않습니다.
TASK_IGNORE_REGISTRATION_TRIGGERS
0x20
작업 스케줄러는 작업을 만들지만 태스크의 등록 트리거는 무시합니다. 등록 트리거를 무시하면 시간 기반 트리거로 인해 등록 시 실행되지 않는 한 작업이 등록될 때 실행되지 않습니다.

[in] userId

작업을 등록하는 데 사용되는 사용자 자격 증명입니다. 있는 경우 이러한 자격 증명은 pDefinition 매개 변수가 가리키는 작업 정의 개체에 지정된 자격 증명보다 우선합니다.

참고 작업이 작업 스케줄러 1.0 작업으로 정의된 경우 이 userId 매개 변수에서 그룹 이름(특정 사용자 이름 대신)을 사용하지 마세요. 작업 설정에서 호환성 속성이 TASK_COMPATIBILITY_V1 설정되면 태스크가 작업 스케줄러 1.0 작업으로 정의됩니다.
 

[in] password

작업을 등록하는 데 사용되는 userId의 암호입니다. TASK_LOGON_SERVICE_ACCOUNT 로그온 형식을 사용하는 경우 암호는 VT_NULL 또는VT_EMPTY 같은 빈 VARIANT 값이어야 합니다.

[in] logonType

등록된 작업을 실행하는 데 사용되는 로그온 기술을 정의합니다.

의미
TASK_LOGON_NONE
0
로그온 메서드가 지정되지 않았습니다. NT가 아닌 자격 증명에 사용됩니다.
TASK_LOGON_PASSWORD
1
사용자에 대한 로깅에 암호를 사용합니다. 암호는 등록 시 제공해야 합니다.
TASK_LOGON_S4U
2
기존 대화형 토큰을 사용하여 작업을 실행합니다. 사용자는 S4U(사용자) 로그온용 서비스를 사용하여 로그온해야 합니다. S4U 로그온을 사용하는 경우 시스템에서 암호를 저장하지 않으며 네트워크 또는 암호화된 파일에 액세스할 수 없습니다.
TASK_LOGON_INTERACTIVE_TOKEN
3
사용자가 이미 로그온되어 있어야 합니다. 작업은 기존 대화형 세션에서만 실행됩니다.
TASK_LOGON_GROUP
4
그룹 활성화. groupId 필드는 그룹을 지정합니다.
TASK_LOGON_SERVICE_ACCOUNT
5
로컬 시스템, 로컬 서비스 또는 네트워크 서비스 계정이 작업을 실행하기 위한 보안 컨텍스트로 사용되고 있음을 나타냅니다.
TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD
6
먼저 대화형 토큰을 사용합니다. 사용자가 로그온하지 않은 경우(대화형 토큰을 사용할 수 없음) 암호가 사용됩니다. 작업을 등록할 때 암호를 지정해야 합니다. 이 플래그는 TASK_LOGON_PASSWORD 것보다 신뢰성이 떨어지므로 새 작업에는 권장되지 않습니다.

[in, optional] sddl

등록된 작업과 연결된 보안 설명자입니다. 작업에 대한 특정 사용자 및 그룹 액세스를 허용하거나 거부하기 위해 작업에 대한 보안 설명자에서 ACL(액세스 제어 목록)을 지정할 수 있습니다.

참고 로컬 시스템 계정이 작업에 대한 액세스가 거부되면 작업 스케줄러 서비스에서 예기치 않은 결과를 생성할 수 있습니다.
 

[out] ppTask

새 작업을 나타내는 IRegisteredTask 인터페이스입니다.

NULLIRegisteredTask 인터페이스 포인터에 대한 참조를 전달합니다. NULL이 아닌 포인터를 참조하면 포인터를 덮어쓰기 때문에 메모리 누수가 발생할 수 있습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드/값 Description
S_OK
0x0
작업이 성공적으로 완료되었습니다.
E_ACCESS_DENIED
0x80070005
작업 스케줄러 서비스에 연결하기 위해 액세스가 거부되었습니다.
E_OUTOFMEMORY
0x8007000e
애플리케이션에 작업을 완료하는 데 충분한 메모리가 없거나 사용자 또는 암호null 이 하나 이상 있고 null 이 아닌 값이 하나 이상 있습니다.
SCHED_S_BATCH_LOGON_PROBLEM
0x0004131C
작업이 등록되었지만 시작에 실패할 수 있습니다. 작업 주체에 대해 일괄 로그온 권한을 사용하도록 설정해야 합니다.
SCHED_S_SOME_TRIGGERS_FAILED
0x0004131B
작업이 등록되었지만 지정된 트리거가 모두 작업을 시작하지는 않습니다.

설명

메시지 상자 작업이 포함된 작업의 경우 작업이 활성화되고 태스크에 대화형 로그온 유형이 있는 경우 메시지 상자가 표시됩니다. 작업 로그온 유형을 대화형으로 설정하려면 작업 주체의 LogonType속성 또는ITaskFolder::RegisterTask 또는 ITaskFolder::RegisterTaskDefinitionlogonType 매개 변수에서 TASK_LOGON_INTERACTIVE_TOKEN 또는 TASK_LOGON_GROUP 지정합니다.

관리자 그룹의 구성원만 부팅 트리거를 사용하여 작업을 만들 수 있습니다.

userId 매개 변수에 지정된 그룹과 iTaskFolder::RegisterTask 또는 ITaskFolder::RegisterTaskDefinitionlogonType 매개 변수에 지정된 TASK_LOGON_INTERACTIVE_TOKEN 작업을 성공적으로 등록할 수 있지만 작업이 실행되지 않습니다.

TASK_VALIDATE_ONLY 및 TASK_IGNORE_REGISTRATION_TRIGGERS 값을 flags 매개 변수에 함께 전달하는 것은 잘못된 인수입니다.

ITaskFolder::RegisterTaskDefinition 메서드는 사용자 매개 변수가 NULL, 암호 매개 변수가 NULL과 같고 logonType 매개 변수가 TASK_LOGON_SERVICE_ACCOUNT 동일한 시스템 계정에서 호출할 때 오류 80070534 반환합니다.

태스크가 작업의 NetworkSettings 설정에 없는 네트워크를 정의하는 경우 ITaskFolder::RegisterTaskDefinition 메서드는 작업이 등록될 때 오류 0x8000ffff 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 taskschd.h
라이브러리 Taskschd.lib
DLL Taskschd.dll

추가 정보

IRegisteredTask

ITaskFolder

작업 Scheduler