在windows7上更改系统时间格式

本文关键字:系统 时间 格式 windows7 | 更新日期: 2023-09-27 18:22:08

我正在寻找一种方法来更改系统的默认windows 7时间格式。因此,如果一个系统使用晚上10点或上午10点作为默认时间标记,那么我喜欢将该系统更改为10:00或22:00。

我知道如何通过GUI来完成,但在我的情况下,我们的软件(C#)必须检查时间符号是否正常,以及是否通过使用C#、注册表编辑、vbscript、commanline或Powershell,或某些特定的.exe文件我们编写的allready软件使用了外部程序/语言(vbscript/powershell)。但问题是,到目前为止,我还没有找到一种方法来做这件事,然后接管远程屏幕。

也许有人知道怎么做?时区和日期表示法也是如此。

在windows7上更改系统时间格式

您可以使用以下代码更改系统时间格式:

RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Control Panel'International", true);
rk.SetValue("sTimeFormat", "hh:mm:ss"); // HH for 24hrs, hh for 12 hrs

但国际海事组织认为,对于未经用户同意就更改系统用户设置的应用程序来说,这不是一个好的做法。

我找到了这个链接,显示它是通过vb.net完成的,但你必须翻译它。或者你可以将它编译成exe并从shell运行它。http://www.access-programmers.co.uk/forums/showthread.php?t=152624

在.NET中实现这一点的属性方法是使用以下代码:

CultureInfo newCultureInfo = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCultureInfo.DateTimeFormat.ShortDatePattern = shortDateFormat;
newCultureInfo.DateTimeFormat.LongTimePattern = longTimeFormat;
Thread.CurrentThread.CurrentCulture = newCultureInfo;

关于使用"控制面板''国际"注册表项的解决方案(抱歉,由于没有50的声誉,无法发表评论):

这似乎不会影响现有进程,只会影响更改注册表后创建的新进程。很明显,假设注册表值的代码(即实现细节)可能会在未来版本的windows中崩溃。

此外,代码应处置RegistryKey对象。最好使用using块编写。

关于是否应该这样做,虽然应用程序不太可能想要更改时间日期格式(也许是一个改进了设置系统信息的应用程序),但在自动测试中这样做是非常合理的。代码依赖于默认的时间/日期格式是一个常见的错误,因此将它们设置为非默认值,或者用各种时间/日期形式测试代码可能是个好主意。