12

我有一个 C# 应用程序,它必须在具有不同文化设置的机器上运行。我认为没问题,它只会在启动时查找机器上当前的文化,并为我做所有事情。好吧,不,它会表明有些地方不太对劲。

我有一台 Windows XP 机器,区域和语言选项中的所有内容都设置为美国英语,但是当我的应用程序启动时,它报告 my CurrentCultureisen-GB和 my CurrentUICultureis en-US

我怎样才能让我的程序只使用 PC 设置的任何内容?

这是一个 Windows 服务应用程序,如果它有任何区别的话。

谢谢

4

3 回答 3

6

Windows 服务通常不会在您的 UserAccount 下运行,因此您的区域设置是什么并不重要。这是关于系统帐户的区域设置。我猜你运行的en-GB是 Windows 版本,系统帐户仍然使用它。

有办法获得该帐户,检查SuperUser

于 2009-11-13T23:54:38.807 回答
4

我相信以下是正确的:

  • CurrentCulture(影响数字和日期格式)将反映运行应用程序的帐户的区域设置。您可以使用当前用户的控制面板/区域设置轻松更改此设置,如果您是管理员,还可以使用“默认”用户,该用户用于经常用于 Windows 服务的系统帐户。要更改默认用户,在某处有一个“用作默认用户”按钮。

  • CurrentUICulture 将对应于您正在使用的 Windows 版本的语言。对于 MUI 版本,您可以在控制面板中更改此设置,但不能用于单语言版本。

于 2009-11-14T00:32:19.513 回答
1

我知道你可以将你的不变文化设置为构建的一部分,但是当我读到这篇文章时,我很惊讶你的构建框的文化变成了你的不变文化。您是否尝试过在所有文件中搜索 en-GB 以确保它没有在某处默认?

无论如何,有一个解决方法。如果您想用 O/S 文化覆盖它,您可以在以下位置获取它并将您的 CurrentCulture 和 CurrentUICulture 属性设置为它:

System.Globalization.CultureInfo.InstalledUICulture
于 2009-11-13T23:34:19.233 回答