Как изменить локаль системы в Windows 2003 с помощью командной строки

Есть ли какая-либо утилита командной строки для изменения локали системы в Windows 2003?

2 ответа

Я не знаю утилиты командной строки, которая строго это делает, но вы могли бы использовать небольшой кусочек VBScript, чтобы изменить соответствующие значения реестра. Это не так просто, как изменить языковой стандарт на вкладке "Общие" диалогового окна "Язык и региональные стандарты", но это работает.

Например, чтобы изменить настройки на "Английский (Великобритания)", вы можете использовать что-то вроде этого:

Dim WSHShell
Set WSHShell = CreateObject("Wscript.Shell")

WSHShell.RegWrite "HKCU\Control Panel\International\iCountry", "44", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iCurrDigits", "2", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iCurrency", "0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iDate", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iDigits", "2", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iLZero", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iMeasure", "0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iNegCurr", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iTime", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iTLZero", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\Locale", "00000809", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\s1159", "AM", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\s2359", "PM", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sCountry", "United Kingdom", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sCurrency", "£", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sDate", "/", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sDecimal", ".", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sLanguage", "ENG", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sList", ",", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sLongDate", "dd MMMM yyyy", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sShortDate", "dd/MM/yyyy", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sThousand", ",", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sTime", ":", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\DefaultBlindDialFlag", "00", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sTimeFormat", "HH:mm:ss", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iTimePrefix", "0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sMonDecimalSep", ".", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sMonThousandSep", ",", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iNegNumber", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sNativeDigits", "0123456789", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\NumShape", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iCalendarType", "1", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iFirstDayOfWeek", "0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\iFirstWeekOfYear", "0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sGrouping", "3;0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sMonGrouping", "3;0", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sPositiveSign", "", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\sNegativeSign", "-", "REG_SZ"
WSHShell.RegWrite "HKCU\Control Panel\International\Geo\Nation", "244", "REG_SZ"

Не существует Win32 API или сценариев (WMI) для переключения локали системы. Тем не менее, вы можете использовать эту командную строку, чтобы сделать это:

rundll32 shell32, Control_RunDLL intl.cpl,,/f:”c:\locale.txt”

Содержимое C:\locale.txt выглядит так:

[RegionalSettings]

LanguageGroup=13

SystemLocale=0401

UserLocale=0401

InputLocale=0409:00000409,0401:00000401

(Это изменит язык системы и пользователя на арабский - Саудовская Аравия и добавит арабскую клавиатуру).


Взято из Microsoft KB

HKEY_CURRENT_USER\Control Panel\International значения можно редактировать напрямую с помощью Powershell Get-ItemProperty команда.

Также вам не нужно выходить / входить для уведомления об изменениях, просто запустите rundll32 user32.dll,UpdatePerUserSystemParameters.

Другие вопросы по тегам