﻿# 如何調整 Windows 作業系統的時間正確性 ( 終極指令版 )

「時間」對任何事情來說都是十分重要的事，當然對作業系統來講也不例外，但你可不要想說「時間」是一件很容易的事，其學問可大著呢！今天我就來分享幾個校正 Windows 作業系統時間的小技巧。

校正的方法很多，我只分享幾種：

**1\. 透過 Windows 內建的校時服務自動校時**

在螢幕右下角透過滑鼠雙擊開啟「日期與時間」的內容

![在螢幕右下角透過滑鼠雙擊開啟「日期與時間」的內容](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1a09f355fa5f138ae3e3-image_3.png "在螢幕右下角透過滑鼠雙擊開啟「日期與時間」的內容")

然後切換到「網際網路時間」頁籤，預設在**單機**且沒有**網域**(**Domain**)的情況下是設定好的，所以主機都會自己自動校時，其實不需要特別設定。

![切換到「網際網路時間」頁籤，預設在單機且沒有網域(Domain)的情況下是設定好的，所以主機都會自己自動校時。](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1bca70d32bc6f703a205-image_6.png "切換到「網際網路時間」頁籤，預設在單機且沒有網域(Domain)的情況下是設定好的，所以主機都會自己自動校時。")

但如果在有網域的情況下，預設網域成員電腦都會自動跟 **網域主控站**(**Domain Controller**；**DC**) 進行校時，所以也不需要特別設定。

但是若是**網域主控站**自己需要校時呢？就不能用這招了。

**2\. 透過**[**國家時間與頻率標準實驗室**](https://www.stdtime.gov.tw/)**所提供的** [**NTP 校時軟體**](https://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe)**進行校時**

我想這也是一般人最常用的校時軟體，如果在**網域主控站**需要**臨時**校正系統時間時，可以用這套工具幫你校時。

![透過國家時間與頻率標準實驗室所提供的 NTP 校時軟體進行校時](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/db1b6420724bd2422935-image_9.png "透過國家時間與頻率標準實驗室所提供的 NTP 校時軟體進行校時")

但總不能登入**網域主控站**後永遠不登出吧，難道重開機之後還要自己登入再執行 NTPClock.exe 嗎？這時就可以考慮第三種方法。

**3\. 使用** [**w32tm.exe**](http://technet.microsoft.com/en-us/library/cc773263\(WS.10\).aspx#w2k3tr_times_tools_dyax) **工具程式搭配批次檔進行時間校正**

這部分在 [TigerLin](http://www.dotblogs.com.tw/tigerlin/) 的【[\[Windows\] w32tm 應用：簡單的 Script 讓 Windows 進行時間同步](https://dotblogs.com.tw/tigerlin/2009/06/08/8726)】文章已有詳細說明，在此不多贅述。但在 [TigerLin](http://www.dotblogs.com.tw/tigerlin/) 的文章中並沒有提到採用 w32tm.exe 的限制，因此稍微做點補充：

如果你的電腦沒有加入任何**網域**，而**遠端時間伺服器**與**本機**的**時間差距**又超過 **54,000** 秒時(共 15 小時)，就會導致 “**電腦並未 resync，因為要求的時間變更太大。**”的錯誤：

![電腦並未 resync，因為要求的時間變更太大。](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/af08892a7547ff938aa9-image_12.png "電腦並未 resync，因為要求的時間變更太大。")

這時要透過 [**w32tm.exe**](http://technet.microsoft.com/en-us/library/cc773263\(WS.10\).aspx#w2k3tr_times_tools_dyax) **工具**修正系統時間就必須修改機碼才能解決，你可以透過以下指令查詢設定值：

![w32tm /dumpreg /subkey:Config](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6f8156c931ac08090dee-image_15.png "w32tm /dumpreg /subkey:Config")

機碼位置在：**HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Config**

-   MaxNegPhaseCorrection (負差校正) - 若**網路時間**比本地時間**慢**超過這個秒數就不自動校正
-   MaxPosPhaseCorrection (正差校正) - 若**網路時間**比本地時間**快**超過這個秒數就不自動校正

若要設定成無上限，可以設定成該 DWORD 的最大值 FFFFFFFF (十六進位值) ( 有 8 個 F )

修改完機碼值之後，必須再執行一次以下指令，才能讓新的機碼生校：

```
w32tm /config /update
```

最後再執行一次 **w32tm /resync** 指令即可完成時間校正的動作。*備註：預設**網域成員電腦**的 MaxNegPhaseCorrection 與 MaxPosPhaseCorrection 已經是**無上限**，因此無須特別修正。*

而當我再深入研究後才發現，原來電腦根本不必設定這個校時的批次檔排程，只要機碼設定正確就會自動校時了。首先，我先分享使用 [w32tm.exe](http://technet.microsoft.com/en-us/library/cc773263\(WS.10\).aspx#w2k3tr_times_tools_dyax) 工具的注意事項：

1.  在網路連線透通的情況下，基本上不需要指定 /manualpeerlist 參數，只有在 Firewall 規則設定的特別嚴謹的情況下才需要自行指派 NTP 伺服器位址。
2.  **w32tm /config /update** 命令是當 Windows Time 伺服器的設定值需要變更時才執行的，並不需要每次都執行。
3.  手動指派 NTP 伺服器位址時，可以設定不止一組，這樣**也許**可以增加校時的有效性，當第一台 NTP 校時伺服器掛掉時會自動切換到第二台進行校時。
4.  選用 NTP 校時伺服器時，建議可以多加利用[國家時間與頻率標準實驗室](https://www.stdtime.gov.tw/)所提供的 [NTP 伺服器清單](https://www.stdtime.gov.tw/chinese/Bulletin/NTP%20promo.txt)進行設定，網址如右：[https://www.stdtime.gov.tw/chinese/Bulletin/NTP%20promo.txt](https://www.stdtime.gov.tw/chinese/Bulletin/NTP%20promo.txt "http://www.stdtime.gov.tw/chinese/Bulletin/NTP%20promo.txt")

若**網域成員電腦**不信任**網域主控站**的時間設定時，可以透過以下指令進行設定：

> w32tm /config /update /manualpeerlist:"time.stdtime.gov.tw clock.stdtime.gov.tw tick.stdtime.gov.tw tock.stdtime.gov.tw watch.stdtime.gov.tw,0x1"

這裡神奇的 ,0x1 就是關鍵所在，加上這個設定就可以讓**網域成員電腦**每小時(預設值)自動校時一次，這是我辛苦看完 [Windows Time Service Tools and Settings](http://technet.microsoft.com/zh-tw/library/cc773263\(WS.10\).aspx) 的研究成果。原理說明如下：

在 [Windows Time Service Tools and Settings](http://technet.microsoft.com/zh-tw/library/cc773263\(WS.10\).aspx) 文件中的 **NtpServer** 機碼說明有一段非常重要的描述：

![NtpServer: There is no default value for this registry entry on domain members. The default value on stand-alone clients and servers is time.microsoft.com,0x1.](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5930a1a351bee472bd78-image_18.png "NtpServer: There is no default value for this registry entry on domain members. The default value on stand-alone clients and servers is time.microsoft.com,0x1.")

在**單機模式**下 (即未加入網域)，預設值為 time.microsoft.com,0x1，所以電腦會自動校時，但預設 7 天才會自動校時一次，如果嫌時間太長可以考慮修改 **NtpClient** 機碼的 **SpecialPollInterval** 參數。若是加入網域的**成員電腦**設定之後，預設是 1 個小時自動校時一次。

![SpecialPollInterval: This entry specifies the special poll interval in seconds for manual peers. When the SpecialInterval 0x1 flag is enabled, W32Time uses this poll interval instead of a poll interval determine by the operating system. The default value on domain members is 3,600. The default value on stand-alone clients and servers is 604,800.](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1036eee0329d11cdd0fa-image_14.png "SpecialPollInterval: This entry specifies the special poll interval in seconds for manual peers. When the SpecialInterval 0x1 flag is enabled, W32Time uses this poll interval instead of a poll interval determine by the operating system. The default value on domain members is 3,600. The default value on stand-alone clients and servers is 604,800.")

**※ 2009/6/16 更新**

-   **網域主控站**的設定請參閱 [網域主控站(DC)如何正確設定 Windows 時間服務 (w32tm)](/post/2009/06/16/Configure-the-Windows-Time-service-on-the-Domain-Controller) 文章。

**相關連結**

-   [\[Windows\] w32tm 應用：簡單的 Script 讓 Windows 進行時間同步](https://dotblogs.com.tw/tigerlin/2009/06/08/8726)
-   [Windows Time Service Tools and Settings](http://technet.microsoft.com/en-us/library/cc773263.aspx)
