我使用了一个VB6 / COM +应用程序,根据控制面板区域设置中的短date设置,为运行它的用户输出date/时间值。 然后,parsing该输出的程序具有其所期望的date格式的可configuration设置,并在UI中呈现。
例如,如果用户的区域设置设置为mm / dd / yyyy,并且输出结果为06/18/2009,则预计“18/06/2009”的应用程序将失败,并且“string未被识别为有效的date时间”。
由于我们通常将此应用程序作为服务帐户(我们尚未以交互方式login)创buildconfiguration文件来运行,因此我们通常会设置正确的date格式,然后勾选“将所有设置应用于当前用户帐户和默认用户configuration文件”选项。
我想使我为这个混乱写的C#configuration实用程序能够以编程方式为给定的用户设置date格式。
编辑我只想修改代码,但目前还没有这个能力。
我也知道我所要求的是一件坏事。 关于“应该是用户的select” – 我是那个用户,因为我明确地为这个任务创build了它; 我只是想通过脚本方法设置date格式,而不是必须自己点击。
这是微软特别不鼓励的。 任何你可能提出的解决方案将是一个肮脏的黑客,可能会很快停止工作。
这样想一想:你是谁来决定这些设置? 你不觉得这是用户的决定吗?
返回主题:为应用程序找到一个明确的格式,例如YYYYMMDD。 显示的应用程序可以简单地尊重实际的用户设置,因为它应该。
但是,既然你不能改变它,只要戳入注册表:
当前用户:
HKEY_CURRENT_USER\Control Panel\International
具体用户:
HKEY_USERS\(user SID)\Control Panel\International
默认用户:
HKEY_USERS\.DEFAULT\Control Panel\International
sShortDate可能是你想改变的那个。
如果您要修改配置文件以满足您的需求,为何不忽略配置文件设置并在应用程序中硬编码您想要的格式?
码:
Imports System.Threading Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US", False) Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "sShortDate", "M/d/yyyy")