Process.Start指定文化

Tje*_*lle 8 .net c# globalization

在一个Web应用程序中,我有一个IHttpHandler,它在调用时启动一个连接到firebird数据库的常规应用程序,并在其他方面从数据库中解析一些日期.

从桌面运行时,应用程序会执行应有的操作而不会出现任何问题.但是当它从httpHandler启动时,最终会出现错误的文化并且无法解析日期.我设置了web.config和CurrentThread.CurrentCulture的文化,但它仍然以错误的方式结束.所有这些都是从英文Windows Server 2003运行,文化设置为sv-SE.

那么有没有办法使用具有特定文化的System.Diganotics.Process.Start启动应用程序?如果新开始的流程没有使用哪种文化?

Ron*_*īts 4

我认为没有办法指定文化。CultureInfo 类特定于 .NET,据我所知,Windows 中没有特定于应用程序的区域性概念。无法使用 Process 和 ProcessStartInfo 类指定区域性。

但是,我相信文化与当前用户相关,因此可能发生的情况是,您的 Web 应用程序在不同用户的上下文中运行,因此当从 Web 应用程序启动时,另一个应用程序会获取其用户的文化设置。因此,您可以更改用于运行 Web 应用程序的用户的区域性(区域设置)。

另一方面,如果您正在运行一个 .NET 应用程序,您可以将文化硬编码到其中。

  • 经过一点点研究后,看起来 Locales 是 Windows 的本机版本,相当于 .NET 的 CultureInfo-s。这里的一般描述:http://msdn.microsoft.com/en-us/goglobal/bb688174.aspx 我发现没有办法以编程方式更改用户区域设置。可能有,所以也许我搜索得不够努力。可能有某种方法可以通过命令行命令来执行此操作(候选 ServerFault 问题?)。如果您愿意尝试,您可以尝试暂时将用户帐户设置为交互式帐户(将其添加到“用户”组),登录并通过 UI 更改设置。 (2认同)