为什么我的CurrentCulture是en-GB而我的CurrentUICulture是en-US?

12

我有一个C#应用程序需要在不同区域设置的计算机上运行。我认为这没有问题,应该只是在启动时查找当前机器的区域设置,然后自动完成一切。但事实并非如此。

我的Windows XP机器上所有区域和语言选项都设置为美国英语,但当我的应用程序启动时,它报告我的CurrentCultureen-GB,而CurrentUICultureen-US

我该如何让我的程序使用PC所设置的区域设置?

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

谢谢


1
这是否与我在一个设置为en-GB的机器上编译应用程序,然后在一个设置为en-US的机器上执行有关?我只是不知道我的en-GB从哪里来,而我的开发机器是唯一的联系。 - SnAzBaZ
3个回答

6

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

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


是的,它被加载为en-GB并更改为en-US。我认为这将修复它。我现在会尝试一下。 - SnAzBaZ

4
我相信以下内容是正确的:
  • CurrentCulture(影响数字和日期格式)将反映您的应用程序运行所在帐户的区域设置。 您可以通过控制面板/区域设置轻松更改当前用户的设置,如果您是管理员,则还可以更改“默认”用户的设置,该用户用于系统帐户,通常用于Windows服务。 要更改默认用户,请在某个地方找到“使用作为默认值”按钮。

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


1

我知道您可以在构建过程中设置不变性文化, 但是当我阅读这篇文章时, 我很惊讶您的构建环境的文化成为了您的不变性文化. 您是否尝试搜索所有文件以查找 en-GB, 以确保它没有默认值?

无论如何, 还有一个解决方法. 如果您想使用操作系统文化来覆盖此设置, 您可以在以下位置获取并将您的 CurrentCulture 和 CurrentUICulture 属性设置为该值:

System.Globalization.CultureInfo.InstalledUICulture

谢谢。我已经检查过了,我没有在任何地方设置它,我使用 System.Globalization 的唯一时间是刚才查看 CurrentCulture 设置时。我将把我的开发电脑更改为 en-US,看看是否解决了这个问题。 - SnAzBaZ
1
哦,InstalledUICulture 报告 en-US,但 CurrentCulture 仍然坚持是 en-GB :-( - SnAzBaZ

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