如何更改Windows用户的区域设置/日期格式?

crb*_*crb 5 c# windows registry datetime regional

我使用VB6/COM +应用程序,根据控制面板中的短日期设置,区域设置,为运行它的用户输出日期/时间值.然后解析该输出的程序具有其期望的日期格式的可配置设置,并在UI中呈现.

例如,如果用户的区域设置设置为mm/dd/yyyy,并且输出06/18/2009,则预期"18/06/2009"的应用程序将失败,并且"字符串未被识别为有效的DateTime".

由于我们通常将此应用程序作为服务帐户运行,我们尚未以交互方式登录以创建配置文件,因此我们通常会设置正确的日期格式,然后勾选"将所有设置应用于当前用户帐户和默认用户配置文件"选项.

我想制作我为此混乱编写的C#配置实用程序,以便能够以编程方式为给定用户设置日期格式.

编辑 我只想更改代码,但此时无法执行此操作.

我也知道我所要求的是一件坏事.关于"它应该是用户的选择" - 我那个用户,因为我明确地为任务创建它; 我只想用脚本方法设置日期格式,而不是自己点击.

Stu*_*Stu 16

微软特别不鼓励这样做.你可能提出的任何解决方案将是一个肮脏的黑客,可能会很快停止工作.

可以这样想:你是谁来决定那些设置?难道你不认为这是用户的决定吗?

回到主题:找到要在其中进行通信的应用程序的明确格式,例如YYYYMMDD.然后,显示的应用程序可以简单地尊重实际的用户设置.

但是,既然你无法改变它,只需进入注册表:

当前用户:

HKEY_CURRENT_USER\Control Panel\International
Run Code Online (Sandbox Code Playgroud)

特定用户:

HKEY_USERS\(user SID)\Control Panel\International
Run Code Online (Sandbox Code Playgroud)

默认用户:

HKEY_USERS\.DEFAULT\Control Panel\International
Run Code Online (Sandbox Code Playgroud)

sShortDate 可能是您想要改变的价值.