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

有帮助吗?

解决方案

设置时区信息 应该做你需要的。你需要使用 P/调用 去了解它。

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

其他提示

这在 Windows 7 中不起作用。我已经尝试了以下环境Windows 7 VSTS-2008,它正在打开更改时区窗口,就像我们手动这样做一样

Santosh您一定是正确的。rundll32 shell32.dll,control_rundll%systemroot% system32 timeDate.cpl,/z%1弃用了多年,并且既不会在Windows 2008,R2,Vista,7,...哦,是的,我注意到这个论坛似乎在识别回车键方面有一个完整的错误。也许有一天程序员会解决这个问题。

尝试这个...

首先,您需要在注册表中找到 钥匙 代表您想要的区域(例如“中部标准时间”)。它们位于这里:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\当前版本\时区

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

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

从 C# 中,调用:

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

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

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

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

看一眼: 如何在 Windows XP 中与 Windows 时间服务同步时间

即使您可能要在 Vista 或 Windows 7 中进行所有这些设置,请看一下 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top