久しぶりに日本標準時刻とPC時刻との差を情報通信研究機構のページで
調べたら2秒遅くなっていた。そこで、自動的に時刻合わせをできないか
WEBで検索して試行錯誤したら泥沼にハマってしまった・・・。
1.Windowsタスクスケジューラの罠
(1)WEBで検索したらタスクスケジューラを使ってPC立ち上げ時などに
時刻合わせができるような記載が多くあった。しかし、試してみたが
時刻合わせが出来ない・・・。
(2)何故か調べたら、そもそもタスクスケジューラが正常に動作していない。
その為、時刻合わせのプログラムが動いていなかった。
→イベントビューアーのWindowsログ/システムを見たら、Time-Serviceのログがなかった。
なお、タスクスケジューラの設定でエラーはなく、正常に受け付けられたように見える・・・。
(3)試しに自分で簡単なプログラム(メモ帳の起動のみ)を作り、タイムスケジューラに登録した。
その後、タスクスケジューラから下図(名前はPCtimeuser)のように直接実行させたら、
いつまでも実行中のままになる。メモ帳がいつまでも起動されないので、結局は手動で
プログラムを終了させた。
(4)結論として、タスクスケジューラは使えない(正常に動作させるには隠されたコツがあるのかも)。
過去に上手く動かせた人もいるが、現時点の最新版Windows10ではダメなのかもしれない。
2.Windowsスタートアップに登録にすれば動作可能
(1)上記のプログラムをスタートアップに登録すれば動作させる事ができる。
(2)そこで Windows Timeサービス(W32Time)を使う事にし、バッチファイルを作り実行させた。
下記のWEBページにお世話になりました。ありがとうございます。
・【Windows 10】 時刻の同期をバッチファイルで実行
なお、SCでなくnetを使用した。(SCではエラーになる事があったので)
(3)バッチファイルを管理者権限で実行させるために、VBScriptを使う。
→管理者権限でないとコマンドがエラーになる為。
下記のWEBページのベストアンサーにお世話になりました。ありがとうございます。
・ VBScriptから外部コマンド(DOSコマンド)を管理者権限で実行したい
コマンドとして上記(2)のバッチファイルを指定した。
(4)自動的に同期できるようになったが、精度が・・・。
何度トライしても0.7秒進んでいる状態が解消できない。
3.PC時刻同期ツールの利用
(1)最終的には”iネッ時計”を使う事にした。
下記のWEBページにお世話になりました。ありがとうございます。
(2)上記により時刻は秒単位でピッタリあっている。Time.isで調べたら誤差はー0.026秒の精度である。
<個人的な感想>
Windows Timeサービス(W32Time)は精度を保証していないとの事なので、
上記1. 2.は無駄な事に多大の時間を使ってしまった。
初めにWindows10に期待したのが間違いであった・・・。