0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Windows11】タスクスケジューラで起動したプロセスがスリープ時に強制終了する(0x8007042B)

Posted at

TL;DR

.batファイルを使って間接的にアプリケーションを起動することで、タスクスケジューラから強制終了されることなく動作させることが可能。

事象

Surface Go 3(Microsoft Windows バージョン21H2 OSビルド22000.856)で起動時に管理者権限を必要とするアプリケーション(.exe)をタスクスケジューラを用いてログインと同時に起動することを試みた。

起動は成功したが、その後Surface Go 3をスリープさせると対象アプリケーションのプロセスが必ず無言で終了してしまう。イベントビューアにApplication Errorのエントリは記載されない。また、起動したいアプリケーションをタスクスケジューラではなく手動で実行してスリープ状態にした場合、10回ほどの試行で強制終了することはないことを確認。よってアプリケーションの問題である可能性は低いと判断。

タスクスケジューラの実行結果には「プロセスを途中で強制終了しました(0x8007042B)」と記載されるため、終了させている主体はタスクスケジューラと推測。

原因

タスクスケジューラから直接アプリケーションを実行した場合、当該アプリケーションが終了するまで「タスクが実行中」と判断するようだ。タスクスケジューラを見るとステータスとして「タスクは実行中です」と表示されるのが分かる。

明確な根拠はないが、タスクスケジューラはタスクの実行中に「本体がスリープ状態になる」など何らかの条件を満たすと、タスクに対応するプロセスを強制終了させる仕組みがあるのではないかと推測する。

対処方法

タスクスケジューラから直接アプリケーションを起動するのではなく、以下のような.batファイルを使って間接的にアプリケーションを起動させる。

hoge.bat
@echo off
start "" "C:\apps\xxx\hoge.exe"

タスクスケジューラから見るとhoge.batの実行完了をもって「タスクの完了」とみなすためか、hoge.batがstartさせたhoge.exeについては関知しない。この方法で起動させるとスリープさせてもアプリケーションが無言で強制終了することはなくなる。

付記

タスクスケジューラによる起動のタイミングや条件が同じ場合、hoge.batに複数のstartを列挙して同時にアプリケーションを起動することも可能。

hoge.bat
@echo off
start "" "C:\apps\xxx\hoge.exe"
start "" "C:\apps\zzz\foobar.exe"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?