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

collectl (особенно его подсистема NFS) является очень хорошей утилитой, которая могла бы быть полезна для Вашего анализа, но это не соответствует Вашему списку требований. Я не знаю ни о какой утилите Linux, которая делает.

(Позвольте мне добавить, что это вне темы отмечает: существует программное обеспечение, которое соответствует Вашим требованиям: находящаяся в DTrace Аналитика Sun (PDF) - но к сожалению не доступно на Linux. Вы найдете много ярких примеров в блоге Brendan Gregg, которые иллюстрируют возможности этого инструмента.)

5
задан 31 May 2010 в 01:27
3 ответа

Нет никакого API Win32 или Сценариев (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

2
ответ дан 3 December 2019 в 01:48

Я не знаю об утилите командной строки, которая строго делает это, но Вы могли использовать маленький бит 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"
2
ответ дан 3 December 2019 в 01:48
  • 1
    Обратите внимание, что пользователь может иметь к выходу / на снова для изменения для вступления в силу. –  David Crow 24 September 2008 в 01:45

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

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

0
ответ дан 25 September 2020 в 02:32

Теги

Похожие вопросы