В этой статье мы покажем, как включить и настроить встроенный в Windows компонент Keyboard Filter (Фильтр клавиатуры) для запрета использования пользователями некоторых сочетаний клавиш клавиатуры. Обычно задач заблокировать определенные клавиатурные сочетания клавиш может возникнуть на различных встроенных устройствах, публичных компьютерах работающих в режиме киоска, операторских или технологический рабочих станциях.
Фильтр клавиатуры можно использовать как для предотвращения случайных нажатий определенных сочетаний, так и для блокировки системных хоткеев. Например, он позволит запретить пользователю закрыть или переключиться из окна запущенной программы с помощью горячих клавиш
Ctrl+Alt+Del
,
Alt+F4
или
Alt+TAB
, запретить запуск диспетчера задач (
Сtrl+Shift+Esc
), или запретить использовать клавиши копирования и вставки через буфер обмена (
Ctrl+C
/
Ctrl+V
) и т.д.
Возможность фильтрации ввода с помощью компонента Keyboard Filter поддерживается только в Enterprise/ Education/ IoT Enterprise/ LTSC редакция Windows (и не поддерживается в Professional редакции без дополнительной конвертации)
Установить компонент Keyboard Filter можно с помощью классической панели управления компонентами Windows (
optionalfeatures
), выбрав его в секции Device Lockdown. Или включите компонент с помощью PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Client-KeyboardFilter

Перезагрузите компьютер после установки компонента. Проверьте, что запущена служба Microsoft Keyboard Filter и настроена на автоматический запуск:
Set-Service -Name MsKeyboardFilter -StartupType Automatic -Status Running

Далее вам нужно определить список клавиши или их комбинаций, которые нужно запретить отправлять операционной системе.
В Windows есть список предопределенных горячих клавиш, который хранится в ветке реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter
. По умолчанию все горячие клавиши разрешены (значение
Allowed
). Чтобы запретить использовать определенные сочетания клавиш, нужно изменить значение на
Blocked
. Можно отредактировать значение параметра вручную, или изменить его командой. Например, чтобы запретить использовать сочетание клавиш
Alt+F4
, выполните команду:
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter" /v "Alt+F4" /t REG_SZ /d "Blocked" /f

Задайте значение Blocked для всех других комбинаций клавиш, который вы хотите запретить. Изменения вступят в силу после перезагрузки компьютера или перезапуска службы
MsKeyboardFilter
.
Теперь если пользователь нажмет запрещенное сочетание клавиш, ничего не произойдет.
В этой ветке реестра есть еще несколько глобальных параметров управления блокировкой сочетаний клавиш:
- DisableKeyboardFilterForAdministrators – измените на
1, если вы хотите чтобы правила блокировки горячих клавиш не действовали на локальных администраторов (по умолчанию 0) - ForceOffAccessibility – если нужно запретить использовать все клавиши специальных возможностей Windows (залипание клавиш, экранная лупа или экранный диктор), измените на
1. - BreakoutKeyScanCode – клавиша разблокировки, значение по умолчанию
5b(шестнадцатеричный скан-код левой клавиши Windows). При пятикратном нажатии клавиши левой Win пользователь будет отправлен на экран входа в систему. Можно переопределить это значение на код другой клавиши. Это полезная функция, когда вы включили фильтр клавиатуры, заблокировали сочетания клавиш Alt + Ctrl + Del и другие способы выхода из сессии пользователя.
Также можно запретить или разрешить использовать определенные стандартные сочетания клавиш через WMI. Пример простой PowerShell функции для блокировки/разблокировки стандартных сочетания:
function Disable-Predefined-Key($Id, $State) {
$key = Get-CimInstance -Namespace "root\standardcimv2\embedded" -ClassName WEKF_PredefinedKey | Where-Object { $_.Id -eq $Id }
if ($key) {
$key.Enabled = $State
Set-CimInstance -CimInstance $key
Write-Host "Block state set to $State for: $Id" -ForegroundColor Green
} else {
Write-Error "$Id is not a valid predefined key."
}
}
Чтобы заблокировать определенное сочетание, выполните:
Disable-Predefined-Key -Id "Alt+Tab" -State 1
Разблокировать сочетание клавиш:
Disable-Predefined-Key -Id "Alt+Tab" -State 0
Вывести все сочетания стандартные клавиш и их статус:
Get-CimInstance -Namespace root\standardcimv2\embedded -ClassName WEKF_PredefinedKey

Можно создать собственные сочетания клавиш, которые нужно запретить. Для этого нужно внутри ветки KeyboardFilter создать подраздел CustomFilters. Например, чтобы запретить сочетания Ctrl+C и Ctrl+V, выполните:
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter\CustomFilters" /v "Ctrl+C" /t REG_SZ /d "Blocked" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter\CustomFilters" /v "Ctrl+V" /t REG_SZ /d "Blocked" /f
Чтобы заблокировать определенную клавишу, например нажатие на клавишу
Q
, выполните:
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter\CustomFilters" /v "Q" /t REG_SZ /d "Blocked" /f

Для блокировки конкретной клавиши необходимо в разделе HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter\CustomScancodes создать параметр со скан-кодом клавиши и значением
Blocked
. Пример блокировки клавиши левый Win по ее шестнадцатеричному коду:
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter\CustomScancodes" /v "E05B" /t REG_SZ /d "Blocked" /f
Список включенных фильтров клавиатуры можно посмотреть в отдельном разделе Event Viewer -> Application and Services Logs -> Microsoft -> Windows -> KeyboardFilter -> Operational. Найдите событие с EventID 10207 от источника
KeyboardFilter
с описанием:
The Keyboard Filter Service has found the following enabled policies.
Переключитесь в режим XML и вы увидите список запрещенных сочетаний клавиш.

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

