在C#中远程设置时区

时间:2008-08-28 16:21:22

标签: c# .net windows localization timezone

如何在C#中以编程方式在本地计算机上设置Windows时区?使用交互式工具不是一种选择,因为远程单元没有用户界面或用户。远程计算机运行.NET 2.0和Windows XP Embedded以及与中央服务器(通过Web服务)通信的本地应用程序,用于自动指导其任务。我们可以提供同步到某个时间/区域组合的命令,但是可以在本地应用程序中放置什么代码来完成更改?在安装之前,设备不会针对特定位置进行成像,因此为了在任何位置使用任何设备,我们必须能够同步这些信息。

6 个答案:

答案 0 :(得分:3)

SetTimeZoneInformation应该做你需要的。您需要使用P/Invoke来获取它。

另请注意,您需要拥有并启用SE_TIME_ZONE_NAME权限。

答案 1 :(得分:1)

这在Windows 7中不起作用。我尝试过以下环境 Windows 7的 VSTS 2008 我们手动打开更改时区窗口

答案 2 :(得分:1)

  

桑托什   你肯定是正确的。 RunDLL32 shell32.dll,Control_RunDLL%SystemRoot%\ system32 \ TIMEDATE.cpl ,, / Z%1   已弃用多年,并且不会在Windows 2008,R2,Vista,7,...上运行   哦,是的,我注意到这个论坛似乎有一个完整的错误,识别回车键。也许有一天程序员会解决这个问题。

答案 3 :(得分:0)

试试这个......

首先,您需要在注册表中找到代表所需区域的(“中央标准时间”就是一个示例)。它们位于:

  

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ Current Version \ Time Zones

因此,考虑到这一点,创建一个批处理文件,“SetTimeZone.bat”,其中包含以下行:

  

RunDLL32 shell32.dll,Control_RunDLL%SystemRoot%\ system32 \ TIMEDATE.cpl ,, / Z%1

从C#,致电:

  

System.Diagnostics.Process.Start(“SetTimeZone.bat”,“您想要设置的时区的键”);

答案 4 :(得分:0)

如果您不使用UTC传输日期,您将面临数据不正确的风险......如果您更改设备上的时区......您的日期将会更远。

您可能希望使用UTC,然后计算每个时区的时间。

答案 5 :(得分:0)

您应该考虑使用Windows时间服务,而不仅仅是设置某些系统的时区。它不仅会处理时区。它还会关注日期和时间本身的正确设置。

看看:How to synchronize the time with the Windows Time service in Windows XP

即使您可能要在Vista或Windows 7中进行所有这些设置,请查看this here