我有一个C#应用程序,必须在具有不同文化设置的计算机上运行。没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。好吧不,它会让事情变得不对劲。
我有一台Windows XP计算机,其中“区域和语言”选项中的所有内容都设置为英语,但是当我的应用程序启动时,它会报告我的CurrentCulture
为en-GB
而我的CurrentUICulture
为en-US
。
如何让我的程序只使用PC设置的任何内容?
如果它有任何不同,这是一个Windows服务应用程序。
由于
答案 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