Windowsのタスクスケジューラで設定されたタスクの親プロセスのメモ。
タスクスケジューラのプロセスの親子関係についてはこちらの記事に良くまとめられている。
以下は参照先の記事からの抜粋。
- Windows 10よりも前のWindowsシステムではスケジュールされたタスクは
taskeng.exe
によって実行される。 - Windows 10以降のWindowsシステムではスケジュールされたタスクは
Task Scheduler
サービスをホストしているsvchost.exe
(C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Schedule
) によって実行される。
記事を読んでいて、schtasks
コマンドのrun
オプションでタスクが実行された場合、親プロセスはどうなるか気になったので調べてみた。(schtasks.exe
が親プロセスになるのか?)
以下のコマンドを Window 7とWindow 10でそれぞれ実行してProcess Monitorでプロセスの親子関係を確認してみた。
schtasks /create /sc ONLOGON /tn test_task /tr "C:\Windows\notepad.exe"
上記のコマンドはtest_task
という名前のタスクを作成する。このタスクはユーザーのログオン時にメモ帳を起動する。
schtasks /run /tn test_task
上記のコマンドはtest_task
タスクを即座に実行する。
Windows 7での検証結果
コマンドプロンプトを管理者権限で立ち上げ、schtasks
コマンドのcreate
オプションでtest_task
タスクを作成し、run
オプションで即座に実行した。
C:\Windows\system32>schtasks /create /sc ONLOGON /tn test_task /tr "C:\Windows\n
otepad.exe"
SUCCESS: The scheduled task "test_task" has successfully been created.
C:\Windows\system32>schtasks /run /tn test_task
SUCCESS: Attempted to run the scheduled task "test_task".
C:\Windows\system32>
Process Monitorで確認したところ、notepad.exe
(メモ帳)の直接の親プロセスはtaskeng.exe
になっていた。
Windows 10での検証結果
Windows 7と同様のschtasks
コマンドでtest_task
タスクを作成して実行し、Process Monitorで確認したところ、notepad.exe
の直接の親プロセスはsvchost.exe
となっていた。
検証のまとめ
schtasks
コマンドのrun
オプションでタスクを実行した場合、
- Windows 7ではタスクの親プロセスは
taskeng.exe
になる。 - Windows 10ではタスクの親プロセスは
svchost.exe
(C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Schedule
) になる。