次の方法で共有


タスクのセキュリティ コンテキスト

タスクは登録され、特定のセキュリティ コンテキストで実行されます。 ユーザーは、タスクを正常に登録、更新、削除、または実行するアプリケーションを作成できますが、タスクが登録されていて、アプリケーションが適切な特権を持つプロセスで実行されている必要がある場合は、適切な資格情報を指定する必要があります。

資格情報の指定

ITaskFolder::RegisterTask または ITaskFolder::RegisterTaskDefinition (TaskFolder.RegisterTask または TaskFolder.RegisterTaskDefinition スクリプト用) メソッドを使用するか、ITaskDefinitionプリンシパル プロパティ (スクリプト用の TaskDefinition.Principal) にプリンシパルを割り当てます。 タスク定義に対してプリンシパルが作成され、その後、RegisterTaskDefinition メソッドを使用して、メソッド パラメーターで指定された異なる資格情報を使用してタスク定義が登録されている場合、RegisterTaskDefinition メソッドで指定された資格情報によって、プリンシパルの資格情報が上書きされます。 XML を使用してタスク定義のプリンシパルが作成され、その後、タスクの XML がメソッド パラメーターで指定された異なる資格情報を持つ RegisterTask メソッドを使用して登録されている場合、RegisterTask メソッドで指定された資格情報によってプリンシパルの資格情報が上書きされます。

タスクを登録するとき、またはタスクの原則を指定するときに、ユーザー アカウントまたはグループを指定します。 ユーザー アカウントまたはグループのセキュリティ コンテキストは、タスクのセキュリティ コンテキストに使用されます。 これらのメソッドとプロパティでは、ログオンの種類も定義します。 ログオンの種類は、TASK_LOGON_TYPE 列挙体の定数の 1 つによって定義されます。

TASK_LOGON_PASSWORDフラグまたはTASK_LOGON_S4Uフラグに登録されたタスクは、指定されたユーザーが Batch としてログオン権限を有効にしている場合にのみ起動します。 管理者と Backup Operators グループ のユーザーには、既定でこの権限が有効になっています。

ITaskService::Connect (TaskService.Connect for scripting) メソッドを呼び出すと、タスク スケジューラ サービスに対する後続のメソッド呼び出しでは、Connect メソッドに渡された資格情報が使用されます。 これは、対話型ログオンの種類でタスクを登録するときに考慮する必要があります。 TASK_LOGON_INTERACTIVE_TOKENと等しいログオンの種類のタスクを登録し、タスク定義の プリンシパル プロパティで指定された資格情報がない場合、RegisterTaskDefinitionするパラメーターで指定されている場合、または RegisterTaskに渡される XML で指定されている場合、 タスクは、Connect メソッドを呼び出したユーザーの資格情報で登録されます。

タスクのユーザー アカウント制御 (UAC) セキュリティ

ユーザー アカウント制御 (UAC) を使用すると、管理者特権を公開することなく、プログラムの実行やデータの保存や変更などの一般的な機能を実行できます。 UAC が有効になっている場合、既定では、タスクは低レベルの特権で実行されます。 タスクでは、IPrincipalRunLevel プロパティ (スクリプトの場合はPrincipal.RunLevel) の TASK_RUNLEVEL_TYPE 列挙から特権レベルを設定することで、管理者特権または低い特権で実行することを指定できます。 RunLevel プロパティの値によって、タスクのアクションを実行する権限レベルが決まります。 タスクのアクションに実行する昇格された特権が必要な場合は、RunLevel プロパティを TASK_RUNLEVEL_HIGHESTに設定する必要があります。 タスクのセキュリティ コンテキストに Administrators グループを使用してタスクが登録されている場合、タスクを実行する場合は、RunLevel プロパティを TASK_RUNLEVEL_HIGHEST に設定する必要もあります。 Builtin\Administrator アカウントまたはローカル システムまたはローカル サービス アカウントを使用してタスクが登録されている場合、RunLevel プロパティは無視されます。 ユーザー アカウント制御 (UAC) がオフになっている場合も、プロパティ値は無視されます。 RunLevel プロパティの値は、タスクの実行または削除に必要なアクセス許可には影響しません。

手記

Windows XP から Windows Vista にオペレーティング システムをアップグレードした後、Windows XP の Builtin\Administrator アカウントを使用して登録されたタスクでは、RunLevel プロパティが TASK_RUNLEVEL_LUAに設定されます。 これにより、一部のタスクが失敗する可能性があります。 このプロパティを手動で更新して、すべてのタスクが確実に実行されるようにすることができます。

 

低い特権プロセスでは、TASK_RUNLEVEL_HIGHESTと等しい RunLevel プロパティにタスクを登録することはできませんが、タスクを TASK_RUNLEVEL_LUAと等しい RunLevel プロパティに登録できます。 タスク アクションは、低い特権で実行されます。 タスクを組み込み/管理者、ローカル システム、またはグループとして登録することはできません。

昇格された特権プロセスから、TASK_RUNLEVEL_HIGHEST または TASK_RUNLEVEL_LUAと等しい RunLevel プロパティにタスクを登録できます。 このタスクは、管理者アカウントを使用している場合を除き、RunLevel プロパティによって決定された特権レベルで実行されます。この場合、タスクは昇格された特権で実行されます。

管理者特権のプロセスから、タスク スケジューラ 1.0 タスクを登録できます。 タスク スケジューラ サービスでは、タスクの実行レベルが TASK_RUNLEVEL_HIGHEST に設定され、タスクは昇格された特権で実行されます。

低い特権プロセスから、タスク スケジューラ 1.0 タスクを登録することもできます。 タスク スケジューラ サービスは、タスクの実行レベルを TASK_RUNLEVEL_LUA に設定し、低い特権でタスクを実行します。 このタスクが昇格されたプロセスから更新された場合、タスクの実行レベルはTASK_RUNLEVEL_LUA。

タスクを登録するためのセキュリティ

Administrators グループのメンバーであるアカウントからタスクを登録する場合は、次の状況でタスクを登録するときにパスワードを指定するだけで済みます。

RegisterTaskまたは RegisterTaskDefinition メソッドで TASK_LOGON_S4U フラグまたはTASK_LOGON_PASSWORD フラグを使用してタスクを登録する場合、ユーザー グループをタスクのセキュリティ コンテキストとして使用することはできません。

Administrators グループのメンバーではないユーザー アカウントからタスクを登録する場合、アカウントのセキュリティ コンテキストで実行するタスクを登録し、S4U または対話型ログオンの種類を使用する場合は、タスクを登録するときにパスワードを指定する必要はありません。 それ以外の場合は、タスクを登録するときにパスワードを指定する必要があります。 また、ローカル サービス アカウントを使用するか、タスクのセキュリティ コンテキストにグループを使用して、タスクを登録することはできません。

タスクの読み取り、更新、削除、実行のセキュリティ

既定では、タスクを作成するユーザーは、タスクの読み取り、更新、削除、実行を行うことができます。 タスクを更新するには、タスク ファイルに対するファイル書き込みアクセス許可、タスクを読み取るためのタスク ファイルに対するファイル読み取りアクセス許可、タスクを削除するためのタスク ファイルに対するアクセス許可の削除、IRegisteredTask::Run または RunEx メソッドを使用してタスクを実行するためのファイル実行アクセス許可が必要です (RegisteredTask.Run およびスクリプト作成用の RunEx)。 Administrators グループまたは SYSTEM アカウントのメンバーは、タスクの読み取り、更新、削除、および実行を行うことができます。 Users グループ、LocalService アカウント、および NetworkService アカウントのメンバーは、作成したタスクの読み取り、更新、削除、実行のみを行うことができます。 この既定の動作は、タスク ファイルの DACL が変更されたときに変更されます。その場合、DACL はファイル書き込み、読み取り、実行、および削除のアクセス許可を持つユーザーを定義します。 タスク ファイルのアクセス許可を設定するには、IRegisteredTask.SetSecurityDescriptor メソッド (スクリプト用の RegisteredTask.SetSecurityDescriptor) を使用するか、RegisterTask または RegisterTaskDefinitionメソッドを使用してタスクを登録するときにセキュリティ記述子設定します。

タスクの更新でタスクの DACL を変更する必要がある場合、ユーザーには、タスクを更新するための読み取り/書き込みアクセス許可に加えて、WriteDAC アクセス許可が必要です。

タスク登録情報

タスク スケジューラ

タスクセキュリティ強化

TaskFolder.RegisterTaskDefinition

ITaskFolder::RegisterTaskDefinition

ITaskDefinitionPrincipal プロパティ

TASK_LOGON_TYPE