Setting the time zone on domain computers through Group Policy

The time zone settings in Windows are kept in registry, in two places. One has a list of all available time zones and their settings and the other has the currently set time zone. When the zone changes Windows copies the proper settings from the list to the current settings key.

The list of time zones is kept under

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

The current zone is set in

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

So, here are a few ways of doing that.

1. Quick one-liner that can be set to run at startup. Through Group Policy if the computers are in an Active Directory Domain. This assumes that all time zones in registry are correct and up to date. Or a longer script can be written to actually check that that is the case.

The time zone can be changed from command line by running

control.exe timedate.cpl,,/Z Time_Zone_Name

The Time_Zone_Name is the key name found in the list of available time zones. For Bucharest for example, at the time of this writing, it’s “GTB Standard Time”, so the above becomes

control.exe timedate.cpl,,/Z GTB Standard Time

Put it in a .bat file, set it to run at startup, all done.

2. The Microsoft way. There’s a KB article on it, it involves importing registry keys for both the list of time zones, to keep it up to date and the correct time zone after the list has been properly updated.

3. There’s TZUtil.exe on some versions of Windows

4. The obvious hack, find a computer with the correct TimeZoneInformation key, export it to a .reg file, import it on all other computers.