ITaskFolder::RegisterTask メソッド (taskschd.h)
XML を使用してタスクを定義する新しいタスクをフォルダーに登録 (作成) します。
構文
HRESULT RegisterTask(
[in] BSTR path,
[in] BSTR xmlText,
[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] xmlText
タスクの XML 形式の定義。
次のトピックには、XML を使用して定義されたタスクが含まれています。
[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::RegisterTask 関数をこのフラグで呼び出してタスクを更新すると、タスク スケジューラ サービスは新しいコンテキスト プリンシパルの ACE を追加せず、古いコンテキスト プリンシパルから ACE を削除しません。
|
-
TASK_IGNORE_REGISTRATION_TRIGGERS
- 0x20
|
タスク スケジューラはタスクを作成しますが、タスクの登録トリガーは無視します。 登録トリガーを無視することで、時間ベースのトリガーによって登録時にタスクが実行されない限り、タスクは登録時に実行されません。
|
[in] userId
タスクの登録に使用するユーザー資格情報。
メモ タスクがタスク スケジューラ 1.0 タスクとして定義されている場合は、この userId パラメーターでグループ名 (特定のユーザー名ではなく) を使用しないでください。 タスクの XML 内の Task 要素のバージョン属性が 1.1 に設定されている場合、タスクはタスク スケジューラ 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 インターフェイス。
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::RegisterTaskDefinitionの logonType パラメーターで、TASK_LOGON_INTERACTIVE_TOKEN または TASK_LOGON_GROUP を指定します。
起動トリガーを使用してタスクを作成できるのは、Administrators グループのメンバーだけです。
ITaskFolder::RegisterTask または ITaskFolder::RegisterTaskDefinitionの logonType パラメーターで指定された userId パラメーターと TASK_LOGON_INTERACTIVE_TOKEN で指定されたグループにタスクを正常に登録できますが、タスクは実行されません。
パラメーター フラグにTASK_VALIDATE_ONLY値とTASK_IGNORE_REGISTRATION_TRIGGERS値を一緒に渡すことは無効な引数です。
タスクの NetworkSettings 設定に存在しないネットワークがタスクで定義されている場合、ITaskFolder::RegisterTask メソッドは、タスクの登録時にエラー 0x8000ffffを返します。
必要条件
要件 |
価値 |
サポートされる最小クライアント |
Windows Vista [デスクトップ アプリのみ] |
サポートされる最小サーバー |
Windows Server 2008 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー |
taskschd.h |
ライブラリ |
Taskschd.lib |
DLL |
Taskschd.dll |
関連項目
IRegisteredTask
ITaskFolder の
タスク スケジューラ の