为什么我的CurrentCulture en-GB和我的CurrentUICulture en-US

时间:2009-11-13 23:08:48

标签: c# globalization cultureinfo

我有一个C#应用程序,必须在具有不同文化设置的计算机上运行。没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。好吧不,它会让事情变得不对劲。

我有一台Windows XP计算机,其中“区域和语言”选项中的所有内容都设置为英语,但是当我的应用程序启动时,它会报告我的CurrentCultureen-GB而我的CurrentUICultureen-US

如何让我的程序只使用PC设置的任何内容?

如果它有任何不同,这是一个Windows服务应用程序。

由于

3 个答案:

答案 0 :(得分:6)

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

有多种方法可以访问该帐户,请查看SuperUser

答案 1 :(得分:4)

我相信以下情况属实:

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

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

答案 2 :(得分:1)

我知道你可以设置你的不变文化作为构建的一部分,但是当我读到你的构建盒文化成为你的不变文化时,我感到很惊讶。您是否尝试过搜索en-GB的所有文件,以确保它不会在某个地方默认?

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

System.Globalization.CultureInfo.InstalledUICulture