exchanger/docs/operations/WINDOWS_KIOSK_SETUP.md

79 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка Windows-киоска Exchanger
## Граница ответственности
Exchanger в production включает borderless fullscreen, скрывает курсор и восстанавливает
полноэкранный режим после смены фокуса, дисплея или разрешения. Приложение не может блокировать
`Ctrl+Alt+Del`, системные жесты, переключение пользователя и аварийные средства Windows.
Эти ограничения настраиваются операционной системой.
## Выделенная учётная запись
1. Создайте локального пользователя без административных прав, предназначенного только для автомата.
2. Запретите интерактивный доступ к рабочим документам и сетевым ресурсам, которые не нужны Exchanger.
3. Выдайте пользователю права записи только в `%APPDATA%\Godot\app_userdata\Exchanger` и каталог установки, если обновление выполняется отдельным сервисом.
4. Настройте автоматический вход только после оценки физической безопасности автомата.
5. Для полной блокировки оболочки используйте Windows Assigned Access либо Shell Launcher в поддерживаемой редакции Windows. Не переименовывайте exe и не заменяйте системную оболочку до проверки процедуры восстановления.
## Автозапуск и watchdog
В `tools/windows` находятся:
- `Exchanger.Watchdog.ps1` — запускает приложение и перезапускает его после завершения;
- `Install-ExchangerKioskTask.ps1` — создаёт задачу Планировщика при входе выделенного пользователя;
- `Uninstall-ExchangerKioskTask.ps1` — удаляет только эту задачу.
Установка выполняется вручную из PowerShell под киоск-пользователем:
```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 недоступны.
## Приёмка после настройки
1. Перезагрузите Windows и убедитесь, что появляется только Exchanger.
2. Завершите процесс через диспетчер задач из административной сессии и проверьте перезапуск.
3. Смените разрешение/отключите тестовый монитор и проверьте восстановление fullscreen.
4. Убедитесь, что клавиатура пользователя не открывает сервисные функции release-сборки.
5. Нажмите физическую кнопку `SERVICE`, проверьте PIN и блокировку после пяти ошибок.
6. Проверьте штатное удаление задачи через `Uninstall-ExchangerKioskTask.ps1 -WhatIf`, затем без `-WhatIf` на тестовом стенде.
## Восстановление
Держите отдельную административную учётную запись и документированный способ временно вернуть
Explorer. До обновления сохраняйте подписанный установочный пакет и последнюю рабочую версию.
Не удаляйте `appsettings.json.bak`: приложение использует её для восстановления после повреждения
или обрыва питания во время записи.