2012-11-21 38 views
1

我想弄清楚System.TimeZoneInfo是本地用户还是系统范围设置?我一直在修改我的本地时区,因为我登录的用户是,但在后台运行的服务,因为记录时区的系统似乎不断记录旧时区。如果TimeZoneInfo是每个用户,那么是否有办法查找所有用户的时区列表?TimeZoneInfo - 每用户或全系统?

回答

1

我假设你真的在谈论TimeZoneInfo.Local?我相信这是一个系统范围的设置,但是它的缓存是基于每个进程的。您可以致电TimeZoneInfo.ClearCachedData()强制刷新 - 尽管很明显,您必须知道这样做:)如果您正在运行需要修改的后台任务,则可以每5分钟调用一次。 。我认为这不会是一个巨大的性能打击,如果你能忍受它达到5分钟的陈旧程度。

(这似乎很奇怪,我认为改变系统时区似乎并不需要进行特权访问 - 在Windows 7中至少 - 但嘿...)

+0

非常感谢!现在我在MSDN上看到TimeZoneInfo.Local缓存的大消息:S – Kyle

1

TimeZone是全系统的,它不是一个用户范围的设置。但你的问题是,.NET缓存当前时区以重置缓存: System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();

1

时区是系统设置。 (HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ TimeZoneInformation)。