トップ回答者
タスクスケジューラで、「ユーザーがログオンしているかどうかにかかわらず実行する」で組んだexeファイルのユーザインターフェースが表示されない。

質問
-
掲題の通りですが、やりたいことは、再起動後にログオフ状態でexeファイルを自動実行させたい。
タスクスケジューラで以下の条件を設定し、再起動→ログイン後に、exeのユーザインターフェースが表示されません。
もう少し詳細は記載しますと、タスクマネージャには存在します。タスクスケジューラの状態は、実行中(0x41301)のままです。ユーザインターフェースは、タスクバーにもどこにも存在しません。
<条件>
・「ユーザーがログオンしているかどうかにかかわらず実行する」
・トリガ:システム起動時
タスクスケジューラ上でEXEが正しく終了し、ユーザインターフェースが表示される(EXEが起動される)方法について
お教え頂けますと幸いです。どうぞ宜しくお願い致します。
回答
-
以下タスクのヘルプより引用します。
------------------------------------------------------------------------------------------------------------
スケジュールされたタスクを実行するアカウントが、タスクがトリガーされた時点でログオンしていない場合でもタスクを実行するように指定することができます。そのためには、[ユーザーがログオンしているかどうかにかかわらず実行する] をクリックします。このオプションが選択されている場合、タスクは対話的に実行されません。タスクを対話的に実行させるようにするには、[ユーザーがログオンしているときのみ実行する] をクリックします。
------------------------------------------------------------------------------------------------------------
画面表示するためには、[ユーザーがログオンしているときのみ実行する]でタスクを作成する必要がありそうです。
好ましくはないと思いますが、自動ログオンの設定を行い、タスクのログオン時かログオンスクリプトで実行すれば画面表示が可能です(タスク起動後にはすぐにログオフさせても問題はないはずです)。
本当は実行するアプリにで直接画面を使用せずに結果や進捗をファイルに書き出すようにすればいいのでしょうが、既成のアプリでそのようなことが出来ないのであれば、前述の方法などでの対処が必要だと思います。
-
Windows 2000 Serverの頃は、以下に書いてあるような方法で要望のことは実現できていました。
http://itpro.nikkeibp.co.jp/free/NT/WinReadersOnly/20040415/78/
現状でも、ここに記載のataskが使えれば、たぶん要望のことは実現できると思います。
ちなみに、要望の動作が簡単にできなくなっているのは、セキュリティ向上のためです。多少はしょった説明になりますが、あるユーザのデスクトップ(画面)に対して別のユーザから簡単にアクセスできないようになっています。
-
ちなみに画面には表示されませんが、裏ではちゃんと動いているのでしょうか?
たとえば、監視ソフトがあり、定期的にデータ受信し、データベースに書き込む処理をするIFソフトを監視(各ソフトが起動していない場合は起動をかける)しているとします。
再起動後、ログインしてもこの監視ソフトは立ち上がってきませんが、裏ではIFソフトをちゃんと監視できているのでしょうか?それは第三者には答えられないことです。あなた自身で検証するしかありません。
一般論として、タスクの実行に成功し、プロセスが開始されていることをタスクマネージャ-やイベントログなどで確認できたとして、正常に動作しているかしていないかを判別する術はありません。(きちんと動いているかの基準を、すべてのアプリで同じ定義にすることはできませんよね?)
たとえば、その監視ソフトがデスクトップの存在を前提としていて、ウィンドウの生成や表示ができないと動作しないようなソフトだった場合、「ちゃんと監視できていない」かもしれません。(または別のセッションで正常に実行されている exe を検出できないといったこともあるかもしれません)あなた自身がその監視ソフトが正常動作している場合に確認できる出力、挙動などを見極めた上で、「正常に監視できていることを確認する方法」を設定し、検証する必要があります。(リスクの軽減)
それができないのであれば、その監視ソフトのメーカーに今の使い方での動作保障を求めてください。(リスクの転嫁)それも無理なら、「きちんと動いていない可能性がある」(リスク)ととらえ、何も保障がない中で自分たちがどうすべきかを考えてください。(動いていなくてもかまわない=リスクの受容など)
- 編集済み AzuleanMVP 2013年4月22日 13:48
- 回答としてマーク 佐伯玲 2013年4月26日 0:52
すべての返信
-
以下タスクのヘルプより引用します。
------------------------------------------------------------------------------------------------------------
スケジュールされたタスクを実行するアカウントが、タスクがトリガーされた時点でログオンしていない場合でもタスクを実行するように指定することができます。そのためには、[ユーザーがログオンしているかどうかにかかわらず実行する] をクリックします。このオプションが選択されている場合、タスクは対話的に実行されません。タスクを対話的に実行させるようにするには、[ユーザーがログオンしているときのみ実行する] をクリックします。
------------------------------------------------------------------------------------------------------------
画面表示するためには、[ユーザーがログオンしているときのみ実行する]でタスクを作成する必要がありそうです。
好ましくはないと思いますが、自動ログオンの設定を行い、タスクのログオン時かログオンスクリプトで実行すれば画面表示が可能です(タスク起動後にはすぐにログオフさせても問題はないはずです)。
本当は実行するアプリにで直接画面を使用せずに結果や進捗をファイルに書き出すようにすればいいのでしょうが、既成のアプリでそのようなことが出来ないのであれば、前述の方法などでの対処が必要だと思います。
-
Windows 2000 Serverの頃は、以下に書いてあるような方法で要望のことは実現できていました。
http://itpro.nikkeibp.co.jp/free/NT/WinReadersOnly/20040415/78/
現状でも、ここに記載のataskが使えれば、たぶん要望のことは実現できると思います。
ちなみに、要望の動作が簡単にできなくなっているのは、セキュリティ向上のためです。多少はしょった説明になりますが、あるユーザのデスクトップ(画面)に対して別のユーザから簡単にアクセスできないようになっています。
-
ちなみに画面には表示されませんが、裏ではちゃんと動いているのでしょうか?
たとえば、監視ソフトがあり、定期的にデータ受信し、データベースに書き込む処理をするIFソフトを監視(各ソフトが起動していない場合は起動をかける)しているとします。
再起動後、ログインしてもこの監視ソフトは立ち上がってきませんが、裏ではIFソフトをちゃんと監視できているのでしょうか?それは第三者には答えられないことです。あなた自身で検証するしかありません。
一般論として、タスクの実行に成功し、プロセスが開始されていることをタスクマネージャ-やイベントログなどで確認できたとして、正常に動作しているかしていないかを判別する術はありません。(きちんと動いているかの基準を、すべてのアプリで同じ定義にすることはできませんよね?)
たとえば、その監視ソフトがデスクトップの存在を前提としていて、ウィンドウの生成や表示ができないと動作しないようなソフトだった場合、「ちゃんと監視できていない」かもしれません。(または別のセッションで正常に実行されている exe を検出できないといったこともあるかもしれません)あなた自身がその監視ソフトが正常動作している場合に確認できる出力、挙動などを見極めた上で、「正常に監視できていることを確認する方法」を設定し、検証する必要があります。(リスクの軽減)
それができないのであれば、その監視ソフトのメーカーに今の使い方での動作保障を求めてください。(リスクの転嫁)それも無理なら、「きちんと動いていない可能性がある」(リスク)ととらえ、何も保障がない中で自分たちがどうすべきかを考えてください。(動いていなくてもかまわない=リスクの受容など)
- 編集済み AzuleanMVP 2013年4月22日 13:48
- 回答としてマーク 佐伯玲 2013年4月26日 0:52