简体   繁体   中英

Windows Service Unable to get correct System Culture

From Control Panel, I set my Region and Language setting to French (France)

When I am running my application as console application,

Thread.CurrentThread.CurrentCulture returns French

But when I'm running it as windows service, it returns invariant culture or English (US)

Is there a way to fix that?

The service is probably running as a user that has it's own culture.

Why not set the culture when you start your service

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");

Also from Default Culture in a Windows Service

If your Windows Service is running under the SYSTEM account or other account without a 
profile it will use the settings defined under the 
"HKEY_USERS/.DEFAULT/Control Panel/International" registry key.  

You can change these values from "Control Panel / Regional and Language Options / Advanced" 
by checking the checkbox "Apply all settings to the current user account and to the default 
user profile".

I normally use the former technique as I only need to change it for a specific service rather than for the whole OS.

.NET 4.5 added CultureInfo.DefaultThreadCurrentCulture and CultureInfo.DefaultThreadCurrentUICulture i suggest setting it as early as possible and it should solve your issue. This will change the current threads culture and all threads that are created.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM