次の方法で共有


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_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::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_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値を一緒に渡すことは無効な引数です。

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

必要条件

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

関連項目

IRegisteredTask

ITaskFolder の

タスク スケジューラ の