У меня были некоторые проблемы с адаптацией приложения для Windows 7 для Windows 8. Проблема была в Windows 8, имеющей глобальный метод ввода в Windows 8.

Я обнаружил, что настройка панели управления "Позвольте мне установить разные методы ввода для каждого приложения Windows" решила мою проблему (установите Windows 8 в режим языка ввода для каждого приложения).

Теперь мой вопрос: где я могу найти этот параметр в реестре Windows 8?

Я хотел бы получить этот ключ в моем приложении ..

1 ответ1

2

Этот параметр хранится в папке HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask. Само значение реестра является двоичным значением, представляющим битовую маску с различными настройками. Его формат задокументирован здесь

К сожалению, этот документ немного устарел и не содержит информации об этом конкретном параметре. Экспериментируя с этим значением, я обнаружил, что значения сохраняются в бите 32. Когда этот бит включен, вход переключается для каждого приложения отдельно.

Example of HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask with setting on:
9e 1e 07 80 92 00 00 00
With setting off:
9e 1e 07 80 12 00 00 00 

Вот пример сценария Powershell, чтобы включить его:

$prefMask = (Get-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name 'UserPreferencesMask').UserPreferencesMask
if (($prefMask[4] -band 0x80) -eq 0) {
  $prefMask[4] = ($prefMask[4] -bor 0x80)
  New-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name 'UserPreferencesMask' -Value $prefMask -PropertyType ([Microsoft.Win32.RegistryValueKind]::Binary) -Force | Out-Null
}

Был протестирован на множестве машин win8.1 (как x86, так и x64) и, похоже, работает как положено.

Обратите внимание, что настройка вступает в силу немедленно, но отображается неправильно в диалоге настроек языковой панели. Таким образом, вам нужно выйти и снова войти в систему для настройки панели, чтобы получить изменения.

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