電腦沒電會導致時間丟失,為了方便同步時間,寫了一個腳本
可以把它放在啟動項里,或者用觸發器,實現開機自動同步
對於同步時間,Windows有一個限制,默認的最大時間差是15小時,所以需要在注冊表里修改2個值。
如果不修改注冊表,可能會有如下提示:
此計算機沒有重新同步,因為要求的時間更改太大。
路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
注冊表項:MaxNegPhaseCorrection 改為 0xFFFFFFFF(盡可能大)
MaxPosPhaseCorrection 改為 0xFFFFFFFF(盡可能大)
MaxNegPhaseCorrection這個代表慢於NTP服務器的時間,如果本地時間超過NTP服務器MaxNegPhaseCorrection秒,就不同步
MaxPosPhaseCorrection這個代表快於NTP服務器的時間,如果本地時間超過NTP服務器MaxPosPhaseCorrection秒,就不同步
用如下兩個命令修改注冊表項:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxNegPhaseCorrection /t reg_dword /d 999999999 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxPosPhaseCorrection /t reg_dword /d 999999999 /f
修改注冊表
reg add "路徑" /v 變量 /t 數據類型 /d 數值 /f
/v 設置鍵名(value)
/t 設置數據類型(type)
/d 設置添加的值(data)
/f 表示強制(forbidden)
重置時間服務的注冊表參數
w32tm /unregister 取消時間服務的注冊
net stop w32time 停止時間服務
在注冊表注冊時間服務
w32tm /register
開啟時間服務
net start w32time
同步時間命令
w32tm /resync
有時候一次不能成功,提示沒有可用數據,可以再加一條語句確保成功率
經過多次測試,以下代碼的語句缺一不可。
粘貼到bat可以直接運行:
(可能需要用管理員權限打開)
w32tm /unregister
net stop w32time
w32tm /register
net start w32time
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxNegPhaseCorrection /t reg_dword /d 999999999 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxPosPhaseCorrection /t reg_dword /d 999999999 /f
net stop w32time
net start w32time
w32tm /resync
w32tm /resync
效果:
同步前
同步后



