Set Windows Timezone via Location Services
It’s always reg keys
This post aims to help those of you trying to set the Windows time zone without relying on DHCP options or similar solutions. Set the registry values below then restart for Windows to update a systems’ timezone via NTP by leveraging Windows Location services.
I’ve used this solution when provisioning new deployments of Windows hosts. This can also be used on existing hosts via a configuration management tool such as SCCM or Group Policy.
Note the current values of these registry keys before making any changes, in case you want to revert these changes once Windows time picks up the new timezone. Making registry changes can cause system instability.
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tzautoupdate
- Name: Start
- Data: 3
- Type: REG_DWORD
- Explanation: This is the equivalent of navigating to
Date & Time
in the Control Panel and tickingSet time zone automatically
to on. Changing this to4
will disable this setting.
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location
- Name: Value
- Data: Allow
- Type: REG_SZ
- Explanation: Turns on Windows Location Services. Required to determine location when setting timezone via NTP.
- (Optional) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
- Name: Type
- Data: NTP
- Type: REG_SZ
- Explanation: The time service synchronizes from the servers specified in the
NtpServer
(below) registry entry.
- (Optional) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
- Name: NtpServer
- Data: time.windows.com,0x9
- Type: REG_SZ
- Explanation: Space-delimited list of peers from which a computer obtains time stamps.
Scripted Solution
Run the following in a PowerShell Window running as administrator then restart:
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\tzautoupdate -Name Start -Value 3 -Type DWord
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location -Name Value -Value Allow -Type String
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters -Name Type -Value NTP -Type String
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters -Name NtpServer -Value 'time.windows.com,0x9' -Type String
Parting Words
Once configured, the registry keys above allow systems to determine timezone via Windows Location Services, and reach out to NTP to get the correct local time. For further exploration of Windows time, check out w32tm.exe or my WinTZ PowerShell Module.
Feel free to reach out if you run into any issues, and see related links (below) for further reading. Hopefully, this post makes your Windows time issues a thing of the past ⌛
Related Links
- Windows Time service tools and settings
- How to configure an authoritative time server in Windows Server
- W32Time: Sync: SpecialPollInterval may be ignored on workgroup computers
Share on: