2012-11-21 47 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)。