0

好吧,我正在寻找一种方法来更改系统的默认 Windows 7 时间格式。因此,如果系统使用 10PM 或 10 AM 作为默认时间表示法,那么我想将该系统更改为 10:00 或 22:00。

我知道如何通过 GUI 执行此操作,但在我的情况下,我们的软件 (C#) 必须检查时间表示法是否正常,以及是否不能通过使用 C#、注册表编辑、vbscript、命令行或 Powershell 或其他方式更改它特定的 .exe 文件 我们编写的软件已经使用外部 progs/语言 (vbscript/powershell)。但问题是到目前为止我还没有找到一种方法来做到这一点,然后接管一个远程屏幕。

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

4

4 回答 4

1

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

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

但是IMO,如果应用程序未经用户同意更改系统用户的设置,这不是一个好习惯。

于 2013-07-12T09:18:32.967 回答
0

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

于 2013-07-12T09:02:39.610 回答
0

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

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

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

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

于 2016-09-21T19:28:28.053 回答
0

在 .NET 中执行此操作的属性方法是使用如下代码:

CultureInfo newCultureInfo = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCultureInfo.DateTimeFormat.ShortDatePattern = shortDateFormat;
newCultureInfo.DateTimeFormat.LongTimePattern = longTimeFormat;
Thread.CurrentThread.CurrentCulture = newCultureInfo;
于 2016-09-22T17:07:15.840 回答