ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

タスクスケジューラで定期的に PC のシステム時刻を同期させる。

これまでの経緯。

お昼ご飯&お昼寝の間にスリープさせておいた PC が勝手にスリープ解除してしまう問題に悩まされていました。
そこでイベントビューアでシステムログを確認したところ、システム時刻の同期のためにスリープを解除しているようでした。
私の想像では、 PC の時計が狂わないように NTP サーバから正しい時刻をインターネット経由で取得するためにスリープを解除させてネットワーク接続していたのではないか と考えました。
昼ご飯で離席する前にあらかじめ時刻を同期してしまえばタスク実行の予定時間が天気されてスリープ解除を回避できる特想定したので、手動でシステム時刻を同期させて様子を見たのでした。
設定画面上では次回の予定時間は夕方になっているので、昼寝から起きた時にはスリープの状態の判別。

さてその結果は?

見事にスリープ解除されてました。
なんでだよ。
イベントビューアで確認してみると、これまでと全く同じようにシステム時刻の同期タスクが実行されてスリープを解除されてしまっています。
つまり何も変わらないと。
どうやら昼頃には必ず時刻の同期が行われるようになっているようです。
その時間をずらす項目が設定画面のどこかにあるんじゃないかとコントロールパネルの時刻関係のメニューを探したり Google 検索してみたのですが、つかみきれませんでした。
レジストリに書き込まれているのかな。

次の対策を考える。

事前の時刻同期で予約をずらす方式が使えないのであれば、時刻同期のスイッチをオフにしてしまえば良いです。
日付と時刻の設定で、時刻を自動的に設定するの項目をオフにしておけば、勝手にスリープ解除されることはなくなるはずです。
一度このチェックを外してお昼ご飯に出かけてみます。


その結果、無事 PC はスリープ状態のままでした。
ただしこのままでは PC の時計は徐々に狂っていきます。
どこかのタイミングで NTP サーバとの同期を取らなければなりません。
私は午前中の9時頃なら、毎日必ず PC を起動しているのですから、この時間帯に手動で時刻同期のタスクを動かせば良いかと思います。
つまり、 Windows 10が備える時刻サーバとの同期機能をオフにして、自分が用意した時刻同期スケジュールを実行させるるのです。

一定時刻ごとに何らかの処理を実行させるには、タスクスケジューラを使います。
タスクスケジューラは Windows 10には必ず入っています。
スタートメニューの Windows 管理ツール探せば見つかるはずです。

私の場合は, Windows + S のショートカットキーで検索パネルを開いて task の順番に入力して行くことで検索候補の中から選んでいます。

タスクスケジューラを設定する。

システム時刻の同期タスクがわからないことには始まりませんので、タスクスケジューラ システム時刻の同期で Google 検索しちゃいます。
もうどんぴしゃのページがヒットして、後はこっちを見て設定してくださいなと脱力しかかります。

yakudate.com


そうは言っても何かの拍子にリンク切れするかもしれないので、少々雑ですが手順を記述します。
なお画像に緑色の枠線が入っていますが、ステップ記録ツールによって画面の撮影を行ったためですのでご了承ください。

タスクスケジューラを起動するとこんな感じになります。

f:id:yasushiito:20190716150641p:plain

左のウインドウのタスクスケジューラライブラリからシステム時刻同期のタスクを探します。
ツリー構造になっていて膨大なタスクがありますが、 Google 検索で調べて所在は明らかになっています。

Microsoft > Windows> time synchronize の順番で進んでいき、 中央のウインドウに時刻同期関連のアイテムが表示されたら、 Synchronize timeを選んで右のウィンドウからpropertyをクリックします。

f:id:yasushiito:20190716150655p:plain

システム時刻の同期に関するタスクのpropertyを設定するウィンドウが開きました。

f:id:yasushiito:20190716150848p:plain


トリガータブを選択します。
このタブでどんな時にタスクが実行されるのかを指定できます。

新規ボタンを押してトリガーを追加します。

f:id:yasushiito:20190716150918p:plain


トリガーを登録するウィンドウが開きました。
毎朝実行したいので、毎日のオプションボタンをクリックして開始時刻も設定します。

f:id:yasushiito:20190716151217p:plain



これで昼間にスリープ解除されることなく、午前中に時刻が同期されるはずです。
時刻が同期されていることの確認はイベントビューアのシステムログを見れば分かるはずです。
特に追記がない場合は、この手法でうまくいったと言うことにしておきます。

なお、スリープ解除のきっかけは他にもたくさんあります。
Windows Update の時に再起動するなどです。
全てのスリープ解除を停止したい時は、システムログを流しながらひとつひとつ原因を潰していかなければならないかと思います。