次の方法で共有


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_CREATETASK_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 パラメーターでグループ名 (特定のユーザー名ではなく) を使用しないでください。 タスクの設定で Compatibility プロパティがTASK_COMPATIBILITY_V1に設定されている場合、タスクはタスク スケジューラ 1.0 タスクとして定義されます。
 

[in] password

タスクの登録に使用する userId のパスワード。 TASK_LOGON_SERVICE_ACCOUNTログオンの種類を使用する場合、パスワードは、VT_NULLVT_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 インターフェイス。

IRegisteredTask インターフェイス ポインターNULL への参照を渡します。 以外の NULL ポインターを参照すると、ポインターが上書きされるため、メモリ リークが発生する可能性があります。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

戻りコード/値 形容
S_OK
0x0
操作が正常に完了しました。
E_ACCESS_DENIED
0x80070005
タスク スケジューラ サービスに接続するためのアクセスが拒否されました。
E_OUTOFMEMORY
0x8007000e
アプリケーションには、操作を完了するのに十分なメモリがありません。または、ユーザー または パスワード に、少なくとも 1 つの null と 1 つの非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 を指定します。

起動トリガーを使用してタスクを作成できるのは、Administrators グループのメンバーだけです。

ITaskFolder::RegisterTask または ITaskFolder::RegisterTaskDefinitionlogonType パラメーターで指定された userId パラメーターと TASK_LOGON_INTERACTIVE_TOKEN で指定されたグループにタスクを正常に登録できますが、タスクは実行されません。

パラメーター フラグにTASK_VALIDATE_ONLY値とTASK_IGNORE_REGISTRATION_TRIGGERS値を一緒に渡すことは無効な引数です。

ITaskFolder::RegisterTaskDefinition メソッドは、ユーザー パラメーターが NULL、NULLと等しい パスワード パラメーター、および logonType パラメーターが TASK_LOGON_SERVICE_ACCOUNT と等 しいシステム アカウントによって呼び出されると、エラー 80070534を返します。

タスクの NetworkSettings 設定に存在しないネットワークがタスクで定義されている場合、ITaskFolder::RegisterTaskDefinition メソッドは、タスクの登録時にエラー 0x8000ffffを返します。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー taskschd.h
ライブラリ Taskschd.lib
DLL Taskschd.dll

関連項目

IRegisteredTask

ITaskFolder の

タスク スケジューラ の