treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

スタートアップよりタスクスケジューラ

スタートメニューのスタートアップフォルダにショートカットを入れておくと、ログオン時に自動実行してくれます。これ便利。

しかし、環境によってはスタートアップを使うよりもいい方法があります。
今日はその辺の話をご報告です。

スタートアップで動作しない

スタートアップフォルダはショートカットを入れておくだけなので非常に便利です。ログオン時に確実にショートカット先の.exeや.batが実行されるため、ログオンするだけで自動実行させるには非常に便利。

しかし、スタートアップで自動実行させるようにしておくには

  • 必ずログオン状態になっていなければならない
  • ログオンしなかったら実行されない

という点には注意しておく必要があります。例えばActive Directoryのポリシーで自動ログオフが強制されている場合、ログインしっぱなしでロックしておくと勝手にログオフされてしまう=スタートアップで実行した常駐プログラムが動作しなくなる、という状況にもなります。

例えば…

  • ドメインコントローラの時計を正確にするために桜時計を常に常駐させておきたい。
  • しかしドメインコントローラは一定時間を経過すると自動的にログオフされてしまう。=桜時計の常駐も解除される(実行されない)

とか、こういう時です。

…別にログオン状態にこだわる必要はないんだけど、常駐アプリは常に動作していてほしいなぁ。
こういう時には「タスクスケジューラ」の出番となります。

タスクスケジューラで

ログオン状態に依存せず常駐させたいアプリケーションはタスクスケジューラで起動することで、ユーザのログオン状態に関係なく実行したいアプリケーションが実行できるようになります。(例えば、桜時計とか)

簡単に言えばスタートアップ起動したいフリーソフトの実行ファイル(.exeファイル)を指定してタスクスケジューラでスケジュールタスクを作成します。
桜時計を例にとれば、そのタスクは以下のようになります。

f:id:treedown:20170921171210p:plain
まずタスク全般で起動するログインユーザの情報を入力しておきます。
ユーザのログオン時に実行したいので「ユーザがログオンしているときのみ実行する」をチェックしてますが、サーバ的に利用するようなPCであればログインしているかどうかに関わらず実行したいこともあるので「ユーザがログオンしているかどうかにかかわらず実行する」にチェックを入れることになりますね。
ちなみに実行ファイル(.exeファイル)実行時にUACが動作するとか、その実行ファイル(.exe)の動作に管理者権限が要求されるような場合には「最上位の特権で実行する」にチェックも入れておきます。桜時計の場合システム時計を調整することになるので、管理者権限が必要となるため、チェックを入れています。

f:id:treedown:20170921171232p:plain
トリガーはログオン時にしています。サーバ的に利用するようなPCの場合には「コンピュータの起動時」を選択することになることもあります。特定のユーザのログオンイベントを起点として実行ファイル(.exeファイル)を実行するためです。

f:id:treedown:20170921171246p:plain
あとは実際に実行するプログラムファイルをフルパスで指定します。
ここではパブリックのプロファイル内にフォルダを作成して桜時計を起動するように指定しています。

これだけやっておくと、Windowsのログオン時に桜時計が起動してきます。ショートカットをスタートアップに登録するよりも確実に実行できますし、もしこれをログオン起点でなくコンピュータの起動を起点とするときに変更も容易になるってもんです。

タスクスケジューラを使ったほうが確実(なこともある)

簡単なインストール不要のフリーソフトを常駐アプリとして使っている場合、ちょっと考えてみたいポイントです。
この辺のちょっとしたTIPSです。

スタートアップフォルダにショートカットを入れておくだけだとたまに常駐せずに動作しないことがあるので、備忘録がてらまとめておきました。