PCの時計が進まない? ~休止モードからの復帰時に自動的に時刻同期させてみる~

  • オンラインゲームにINしておいて席を離れ、戻ってきたら画面がフリーズしていた…
  • PC起動中にエラーが発生し、自動でログ収集する画面に入ってフリーズ…

怪しい動きが出てきたので、例によって、CMOS電池を交換してみる。

交換前に電池の電圧を図ってみた。現在の電池:3.0V、新品の電池3.2V。毎度思うが、もう少し電圧が下がるくらいまで動いてほしいと思う…。

電池交換後、BIOS設定で時刻を設定しようとしたのだが、時刻設定用のところの時刻が更新されていない??? 確か秒単位で更新していたように思うのだが、気のせいかも…等と考えているうちに、カーソルが動かなかくなった!!!

なんか、ヤバいぞ…いつもと様子が違う…

念のためBIOSを最新に更新してみた(これは何とか固まる前に出来た)が、時刻が動かないのは同じ。あまり長いこと放置してカーソルが動かなくなると嫌なので、BIOS初期設定は簡単に済ませる。

それから、Windowsを起動。ちゃんと立ち上がった!が時刻はPCの時刻を引っ張ってくるらしくズレている。Windows上では、PCの時刻ではなくWindowsの時刻が合っていれば使えるのでは?と思い、オンラインゲームで試してみる。

「日付と時刻の調整→時刻を同期する→今すぐ同期」で、Windowsの時計をネットワークに同期させてから、オンラインゲームにログイン。認証もパスしてINできた!これで当面は騙しながらPCを使うことができそうだ。

 

欲を言えば…

PCを起動(私の場合は、主に休止モードからの復帰)したときに、自動的に時刻同期をするようにできないだろか…?

同じような症状になった人が居ないか調べてみると、一人発見。

休止状態から復帰するときに時刻同期するようにしてみた | Kiri2's Blog

残念ながらWindowsのバージョンが異なる?ためか、スクリプトはそのままでは使えなかった。強引にWindows10で動くものに改造してみた。

 

'HiberAfterStart.vbs
'—
Option Explicit

On Error Resume Next

'管理者権限で実行させる
Dim oShellApp
Set oShellApp = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
  oShellApp.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
  Wscript.Quit
end if
Set oShellApp = Nothing

'これ以降に実行したい処理を記述していく
Dim WSH
Dim intH1,intH2
Set WSH = CreateObject("WScript.Shell")

while true
    intH1 = WSH.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power\TotalHibernateTime")

    intH2 = intH1
    while intH1=intH2
        intH1 = WSH.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power\TotalHibernateTime")

        WScript.Sleep 10000
    wend

'    WScript.Sleep 1000
'    WSH.Run "net.exe stop w32time"

    WScript.Sleep 2000
    WSH.Run "net.exe start w32time"

    WScript.Sleep 20000
    WSH.Run "w32tm.exe /resync"

wend

 

これをスタートアップコマンドとして実行するように設定(このスクリプトのショートカットをスタートアップフォルダに置く)する。

管理者権限にするため、PC起動時に聞かれるのはご愛敬ということで…(^^;)

 

たまに失敗する?ようではあるが、概ね正常に動作している様子。

ただし、時刻同期に成功しても、時々Windowsの時計がズレてくる時がある。原因不明… マザーボード交換すれば治るかもしれないけど、もう互換品は売ってないんだよね~。最新のマザーボードにしたりしたら、パーツ全買い直しになってしまうし…

悩ましいね…(>_<)