Set Windows Timezone via Location Services

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.

  1. 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 ticking Set time zone automatically to on. Changing this to 4 will disable this setting.
  2. 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.
  3. (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.
  4. (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 ⌛


Improve this page: 

Share on:      

Comments 💬