我有一个C#应用程序,它必须在具有不同文化设置的机器上运行。没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。嗯,不,它会让事情变得不对劲。
我有一台Windows XP机器,区域和语言选项设置为英语美国,但当我的应用程序启动时,它报告我的 CurrentCulture
是 en-GB
和我的 CurrentUICulture
是 en-US
。
如何让我的程序只使用PC设置的任何内容?
如果它有任何区别,这是一个Windows服务应用程序。
谢谢
我有一个C#应用程序,它必须在具有不同文化设置的机器上运行。没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。嗯,不,它会让事情变得不对劲。
我有一台Windows XP机器,区域和语言选项设置为英语美国,但当我的应用程序启动时,它报告我的 CurrentCulture
是 en-GB
和我的 CurrentUICulture
是 en-US
。
如何让我的程序只使用PC设置的任何内容?
如果它有任何区别,这是一个Windows服务应用程序。
谢谢
Windows服务通常不会在您的UserAccount下运行,然后无关紧要 你的 区域设置是。它是关于系统帐户的区域设置。我猜你跑了 en-GB
Windows版本,系统帐户仍然使用它。
有办法获得该帐户,请检查 超级用户。
我相信以下是真的:
CurrentCulture(影响数字和日期格式)将反映运行应用程序的帐户的区域设置。您可以使用当前用户的“控制面板/区域设置”轻松更改此设置,如果您也是“默认”用户的管理员,该用户也可用于通常用于Windows服务的系统帐户。要更改默认用户,会在某处显示“Use as Default”按钮。
CurrentUICulture将对应您正在使用的Windows版本的语言。对于MUI版本,您可以在“控制面板”中进行更改,但不能对单语言版本进行更改。
我知道你可以设置你的不变文化作为构建的一部分,但是当我读到你的构建盒文化成为你的不变文化时,我感到很惊讶。您是否尝试过搜索en-GB的所有文件以确保它不会在某处默认?
无论如何,有一个解决方法。如果要使用O / S文化覆盖它,可以在以下位置获取它并将CurrentCulture和CurrentUICulture属性设置为:
System.Globalization.CultureInfo.InstalledUICulture