4

Я пытаюсь настроить языковую панель (переключатель языка в systray, который появляется, когда у вас установлено несколько языков ввода) для наших пользователей.

языковая панель

Я легко могу добавить новые языки, используя regkeys ниже HKCU, но проблема в том, что пользователь должен перезагрузить или перезагрузить свой компьютер, чтобы увидеть эффект.

Ключи, которые я использую (я пишу их с активной настройкой), находятся в «HKEY_CURRENT_USER\ Раскладка клавиатуры \ Предварительная загрузка», ниже этого ключа указаны имена / значения типа REG_SZ.

Обычно уже есть такие клавиши, как "1" = "0000407" "2" = "0000409", что означает, что у пользователя установлена немецкая и английская раскладки клавиатуры, если я хочу добавить, скажем, итальянский, я бы добавил клавишу "3" = "0000410". после следующего входа / выхода изменения видны пользователю.

Теперь то, что я уже пробовал, это отправка различных сообщений Windows, таких как WM_SETTINGCHANGE или «RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters ", но пока бесполезный результат.

У меня заканчиваются идеи, поэтому выход из системы сотен пользователей / вход в систему не будет таким уж большим:/

Я также думал об автоматизации мышиных кликов (например, с помощью autoit), но это обычно вызывает больше проблем, чем пользы.

1 ответ1

2

Вы не должны делать это посредством редактирования реестра, поскольку наши знания об этом весьма ограничены, но используйте механизм, предоставляемый Windows.

Microsoft создала Windows PowerShell в качестве основного интерфейса программирования, который обеспечивает доступ практически ко всем функциям Windows. К сожалению, семейство функций PowerShell, относящихся к языку « Командлеты международных настроек», было представлено только для Windows 8/Server 2012 и недоступно для Windows 7 или Vista.

Тем не менее, существуют решения для Windows 7 или Vista, как описано в статье MSDN:
Windows Vista Конфигурация командной строки международных настроек.

Пример использования этого метода можно найти в разделе «Настройка региональных и языковых параметров международных настроек с помощью автоматизации командной строки», в которой в основном используется специально созданный XML-файл с командой:

control intl.cpl,, /f:"intlsettings.xml"

Ниже перечислены некоторые примеры XML-файлов.

Изменить текущий язык

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
    <!--User List-->
    <gs:UserList>
        <gs:User UserID="Current"/>
    </gs:UserList>
    <!-- User Locale-->
    <gs:UserLocale>
        <gs:Locale Name="es-US" SetAsCurrent="true"/>
    </gs:UserLocale>
</gs:GlobalizationServices>

Добавить язык клавиатуры

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"> 
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList> 
<gs:InputPreferences> 
<gs:InputLanguageID Action="add" ID="0804:E0200804"/>
</gs:InputPreferences>
</gs:GlobalizationServices>

Удалить язык клавиатуры

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"> 
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList> 
<gs:InputPreferences> 
<gs:InputLanguageID Action="remove" ID="0804:E0200804"/>
</gs:InputPreferences>
</gs:GlobalizationServices>

источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .