Служба Windows Невозможно получить правильную системную культуру
На панели управления я установил для своего региона и языка значение French (France)
Когда я запускаю свое приложение как консольное приложение,
Thread.CurrentThread.CurrentCulture
возвращает французский
Но когда я запускаю его как службу Windows, он возвращает инвариантную культуру или английский (США).
Есть ли способ это исправить?
2 ответа
Сервис, вероятно, работает как пользователь с собственной культурой.
Почему бы не установить культуру, когда вы начинаете свой сервис
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
Также из культуры по умолчанию в службе Windows
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".
Я обычно использую первый метод, так как мне нужно изменить его только для конкретной службы, а не для всей ОС.
.NET 4.5
добавленной CultureInfo.DefaultThreadCurrentCulture
а также CultureInfo.DefaultThreadCurrentUICulture
Я предлагаю установить его как можно раньше, и это должно решить вашу проблему. Это изменит текущую культуру потоков и все созданные потоки.