I really want to make Windows 7 understand that RTC in using UTC instead of local time. I found a solution, except for it does not play well with time synchronization.
Modified the registry as needed and rebooted the system several times.
Under "Internet Time Synchronization" as available in "Internet Time" tab of "Date and time" dialog (due to localization naming may slightly differ) set hostname to "localhost" (which is not running NTP server), tried to sync, then unticked the checkbox.
Disabled the scheduled task to sync clock weekly and made sure W32Time service is stopped.
Just in case, re-checked that DHCP server does not announce any NTP servers or other extra options.
w32tm /config /syncfromflags:NO. Although it reports success, I'm not sure this does anything useful, as the service's not running.
After all of the above's done, manually set the date/time and timezone to correct values.
Clock runs fine for a some time, however, after an hour or so it's reset to a wrong value. The change happens only once, then wrong time persists. The machine does not sleep or hibernate.
I've checked the Event Log and the only messages are from
Kernel-General, mentioning just the fact system time was changed, but no reason why did that happen. Enabling privilege use and process spawn audit logs does not reveal any activity near the time clock jumps – no privilege elevations near the jump, and the only process spawn is
taskhost.exe right after the clock changes (which is, I persume, normal).
How could I completely disable this annoying behaviour? I suspect this happens when Windows tries to update hardware clock, but I'm not really sure. If that's the case then I'm fine with even never syncing time back to hardware clock.