启动进程时指定文化设置

10
在一个 Web 应用程序中,我有一个 IHttpHandler,在被调用时会启动一个常规应用程序,该应用程序连接到一个 Firebird 数据库,并从数据库中解析一些日期。在桌面上运行该应用程序时,它能够正常工作而没有任何问题。但是当它从 httpHandler 启动时,它会以错误的文化结束并无法解析日期。 我已经在 web.config 和 CurrentThread.CurrentCulture 中设置了文化,但它仍然以错误的文化结束。 所有这些都是从一个将文化设置为 sv-SE 的英语 Windows Server 2003 运行的。
那么,有没有一种方法可以使用 System.Diagnostics.Process.Start 方法以特定的文化启动应用程序? 如果没有,新启动的进程将使用哪种文化?

你能进一步解释一下,你想要实现什么吗? - Lazarus
1个回答

4
我认为没有一种方法可以指定文化。CultureInfo类是特定于.NET的,据我所知,在Windows中没有应用程序特定的文化概念。使用Process和ProcessStartInfo类无法指定文化。
然而,我相信文化与当前用户相关联,因此可能发生的情况是,您的Web应用程序在不同用户的上下文中运行,因此从Web应用程序启动时,其他应用程序会获得其用户的文化设置。因此,您可以更改用于运行Web应用程序的用户的文化(区域设置)。
另一方面,如果您运行的是.NET应用程序,则可以将文化硬编码到其中。

是的,我有一种感觉,可能与某些用户设置有关。不幸的是,它不是一个.NET应用程序,我不能轻易修改它。 因此,剩下的问题是:如何更改系统帐户的区域设置? - Tjelle
2
经过一点研究,看起来区域设置是Windows本地相当于.NET的CultureInfo-s。这里有一个一般性的描述:http://msdn.microsoft.com/en-us/goglobal/bb688174.aspx我找不到以编程方式更改用户区域设置的方法。可能有,所以也许我没有找得够努力。也可能有一些通过命令行命令进行此操作的方法(一个候选的ServerFault问题?)。如果你愿意尝试,可以尝试将用户帐户临时变为交互式帐户(将其添加到Users组),登录后通过UI更改设置。 - Ronald Zarīts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接