2008-08-28 64 views
2

如何在C#中以編程方式在本地機器上設置Windows時區?使用交互式工具不是一種選擇,因爲遠程單元沒有用戶界面或用戶。遠程機器正在運行.NET 2.0和Windows XP Embedded以及一個本地應用程序,該應用程序與中央服務器(通過Web服務)進行通信,以實現自動執行任務的方向。我們可以提供一個命令以同步到某個時間/區域組合,但是可以在本地應用程序中放置哪些代碼來完成更改?在安裝之前,設備沒有爲特定位置成像,因此爲了在任何位置使用任何設備,我們必須能夠同步這些信息。在C#中遠程設置時區

回答

3

SetTimeZoneInformation應該做你所需要的。你需要使用P/Invoke來解決它。

還要注意,您需要擁有並啓用SE_TIME_ZONE_NAME權限。

0

嘗試......

首先,你需要找到,在註冊表中,代表您要該區域的關鍵(「中央標準時間」就是一個例子)。這些都坐落在這裏:

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows NT \當前版本\ Time區域

因此,考慮到這一點,創建一個批處理文件, 「SetTimeZone.bat」 與在它下面的行:

RUNDLL32 SHELL32.DLL,Control_RunDLL%SYSTEMROOT%\ SYSTEM32 \ TIMEDATE.cpl ,,/Z%1

從C# ,請致電:

System.Diagnostics.Process.Start(「SetTimeZone.bat」,「您要設置的時區密鑰」);

0

如果您不使用UTC傳輸日期,那麼您將面臨有不正確數據的風險......如果您更改設備上的時區...您的日期將更加緊密。

您可能需要使用UTC,然後計算每個時區的時間。

1

這不是在Windows 7中工作,我曾嘗試用以下的環境 Windows 7的 VSTS 2008 它打開更改時區窗口,因爲我們做手工

1

santosh 您確定無誤。 RunDLL32 shell32.dll,Control_RunDLL%SystemRoot%\ system32 \ TIMEDATE。cpl ,,/Z%1 已被棄用多年,並且不會在Windows 2008,R2,Vista,7,... 上運行哦,是的,我注意到這個論壇似乎有一個識別輸入密鑰的完整錯誤。也許有一天程序員會解決這個問題。