6.9 KiB
Настройка Windows-киоска Exchanger
Граница ответственности
Exchanger в production включает borderless fullscreen, скрывает курсор и восстанавливает
полноэкранный режим после смены фокуса, дисплея или разрешения. Приложение не может блокировать
Ctrl+Alt+Del, системные жесты, переключение пользователя и аварийные средства Windows.
Эти ограничения настраиваются операционной системой.
Выделенная учётная запись
- Создайте локального пользователя без административных прав, предназначенного только для автомата.
- Запретите интерактивный доступ к рабочим документам и сетевым ресурсам, которые не нужны Exchanger.
- Выдайте пользователю права записи только в
%APPDATA%\Godot\app_userdata\Exchangerи каталог установки, если обновление выполняется отдельным сервисом. - Настройте автоматический вход только после оценки физической безопасности автомата.
- Для полной блокировки оболочки используйте Windows Assigned Access либо Shell Launcher в поддерживаемой редакции Windows. Не переименовывайте exe и не заменяйте системную оболочку до проверки процедуры восстановления.
Автозапуск и watchdog
В tools/windows находятся:
Exchanger.Watchdog.ps1— запускает приложение и перезапускает его после завершения;Install-ExchangerKioskTask.ps1— создаёт задачу Планировщика при входе выделенного пользователя;Uninstall-ExchangerKioskTask.ps1— удаляет только эту задачу.
Установка выполняется вручную из PowerShell под киоск-пользователем:
.\tools\windows\Install-ExchangerKioskTask.ps1 `
-ExecutablePath 'C:\Program Files\Exchanger\Exchanger.exe' `
-WhatIf
.\tools\windows\Install-ExchangerKioskTask.ps1 `
-ExecutablePath 'C:\Program Files\Exchanger\Exchanger.exe'
Сначала обязательно используйте -WhatIf. Watchdog хранит собственный ограниченный журнал в
%LOCALAPPDATA%\Exchanger\watchdog; пользовательские журналы приложения находятся отдельно в
%APPDATA%\Godot\app_userdata\Exchanger\logs.
Питание и дисплей
- отключите сон, гибернацию и автоматическое выключение дисплея для киоск-профиля;
- запретите USB selective suspend для подтверждённого COM-контроллера;
- задайте фиксированную портретную ориентацию и масштаб Windows;
- отключите автоматическое подключение беспроводных дисплеев;
- после замены монитора проверьте 1080×1920 и fallback 720×1280;
- настройте автоматическое включение ПК после восстановления питания в BIOS/UEFI.
Защищённый сервисный вход
Production не реагирует на F10. Экран PIN открывается только после физического сообщения
SERVICE от периферийного контроллера и только когда пользовательская операция не выполняется.
Защита включается в разделе «Общие» настроек владельца. После автосохранения и выхода следующий
вход показывает создание PIN: необходимо ввести и повторить от 4 до 12 цифр. Последующие входы
проверяют этот PIN; после пяти ошибок вход блокируется на 30 секунд. Кнопка «Сбросить PIN» удаляет
старые проверочные данные, после чего новый PIN задаётся при следующем входе.
Открытый PIN не входит в appsettings.json, резервную копию, журналы или diagnostic UI. В секции
Security сохраняются только случайная соль, PBKDF2-SHA256-хеш и число итераций. Доступ к самому
файлу конфигурации и учётной записи Windows всё равно должен быть ограничен средствами ОС.
AES-ключ, платёжные данные и сырые команды контроллера через UI недоступны.
Приёмка после настройки
- Перезагрузите Windows и убедитесь, что появляется только Exchanger.
- Завершите процесс через диспетчер задач из административной сессии и проверьте перезапуск.
- Смените разрешение/отключите тестовый монитор и проверьте восстановление fullscreen.
- Убедитесь, что клавиатура пользователя не открывает сервисные функции release-сборки.
- Нажмите физическую кнопку
SERVICE, проверьте PIN и блокировку после пяти ошибок. - Проверьте штатное удаление задачи через
Uninstall-ExchangerKioskTask.ps1 -WhatIf, затем без-WhatIfна тестовом стенде.
Восстановление
Держите отдельную административную учётную запись и документированный способ временно вернуть
Explorer. До обновления сохраняйте подписанный установочный пакет и последнюю рабочую версию.
Не удаляйте appsettings.json.bak: приложение использует её для восстановления после повреждения
или обрыва питания во время записи.