TaskCacheレジストリのDateキーに保持される日時はタスクの設定ファイル (XML) の<Date>タグに指定された日時が反映される。XMLファイルの内容は (<Date>タグも含めて) ユーザーが自由に記述できるので、Dateキーの値は必ずしも実際のタスクの作成日時を表すものではない、という話のメモ。
TL;DR
TaskCacheレジストリのDateキーに保持される日時はタスクの設定ファイル (XML) の<Date>タグに指定された日時が反映される。- XMLファイルの内容は (
<Date>タグも含めて) ユーザーが自由に記述できるので、Dateキーの値は必ずしも実際のタスクの作成日時を表すものではない。 - タスクの正確な作成日時を確認したい場合は、関連するファイル(
C:\Windows\System32\Tasks) のタイムスタンプやレジストリ(HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache) の更新日時、関連するイベントログ等を参照すること。
経緯
先日、Windowsシステムの侵害調査を行った。事前に、2025年1月1日 00:00:00 UTC (日時は仮のもの)にタスクスケジューラを用いて悪意のあるタスクが作成されたと報告を受けていたのだが、ファイルシステム (C:\Windows\System32\Tasks) のタイムスタンプやレジストリ (HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache) の更新日時と照らし合わせたところ、報告されたタスクの作成日時とズレていることが判明した (ちなみに侵害から時間が経っていたため、関連するイベントログはすでに消失していた)。
タスクの作成日時はEDRのテレメトリーをもとに報告されていたのだが、どうやらEDRはTaskCacheレジストリのDateキーに保持された日時をタスクの作成日時として報告していた模様。
検証した結果、TaskCacheレジストリのDateキーに保持される日時はタスクの設定ファイル (XML) の<Date>タグに指定された日時が反映されることが分かった。
XMLファイルの内容はユーザーが自由に記述できるので、<Date>タグにも任意の日時を指定することが可能である。なので、必ずしも実際のタスクの作成日時を表すものではない。
以下は検証結果。
検証
schtasksコマンドで普通にタスクを作成した場合と、XMLに任意の日時を指定してタスクを作成した場合の2パターンを検証した (Windows 10で検証)。
schtasksコマンドで普通にタスクを作成
まずは以下のschtasksコマンドで普通にタスクを作成してみた。
schtasks /create /sc ONLOGON /tn test_task_onlogon /tr "C:\Windows\notepad.exe"
コマンドの実行日時は2026年11月5日 12:43PM (UTC)である。

コマンドが実行された結果、C:\Windows\System32\Tasksに関連するXMLファイルが作成された。
C:\Windows\System32\Tasks\test_task_onlogon の作成日時は2026年11月5日 12:43PM (UTC)。

続いてTaskCacheレジストリに保持されているタスクの作成日時を確認。まず、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\test_task_onlogon よりタスクのIDを確認。

タスクのIDは {2F49111B-715C-4FE4-8368-1A53942C06D3} と判明。
続いて HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{2F49111B-715C-4FE4-8368-1A53942C06D3} のDateキーを確認。

Dateキーに保持されている日時は2026-11-05T12:43:14だった。
普通にタスクを作成した場合、ファイルシステム (C:\Windows\System32\Tasks)のタイムスタンプとTaskCacheレジストリのDateキーに保持される日時にズレは生じない。
ちなみに以下はschtasksコマンドの実行後に作成されたC:\Windows\System32\Tasks\test_task_onlogonの内容。<Date> タグの日時は2026-11-05T12:43:14。

XMLに任意の日時を指定してタスクを作成
続いて任意の日時を指定したXMLファイルをschtasksコマンドに読み込ませてタスクを作成した。
以下はschtasksコマンドに読み込ませるXML (C:\Users\analyst\Desktop\test_task_onlogon02_config.xml) の内容である。<Date> タグに1999-01-01T09:00:00 と指定した。

以下のschtasksコマンドで上記のXMLを読み込ませてタスクを作成。
schtasks /create /tn "test_task_onlogon02" /xml "C:\Users\analyst\Desktop\test_task_onlogon02_config.xml"
コマンドの実行日時は2026年11月5日 12:58PM (UTC) である。

コマンドが実行された結果、C:\Windows\System32\Tasksに関連するXMLファイルが作成された。
C:\Windows\System32\Tasks\test_task_onlogon02 の作成日時は2026年11月5日 12:58PM (UTC)。

続いてTaskCacheレジストリに保持されているタスクの作成日時を確認。まず、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\test_task_onlogon02 よりタスクのIDを確認。

タスクのIDは{5090138B-AB34-4628-BD39-3B8F23A38966}と判明。
続いて HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{5090138B-AB34-4628-BD39-3B8F23A38966} のDateキーを確認。

Dateキーに保持されている日時は1999-01-01T09:00:00だった。これはschtasksコマンドに読み込ませたXMLの<Date> タグに指定した日時と同じである。
ちなみに以下はschtasksコマンドの実行後に作成されたC:\Windows\System32\Tasks\test_task_onlogon02の内容。こちらも <Date> タグの日時は1999-01-01T09:00:00となっていた。
