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