Назад
SQLITE_READONLY при подключении в TUN-режиме после повышения прав до администратора
БагОткрытКритичноПубличныйDesktop
Автор: 7**********@yandex.ru
Продукт: Приложение INCY
Создан: 20.09.2026, 10:16:25
Версия приложения: 3.8.6
Версия ОС: Windows 11 Pro 25H2 (Build 26200.9457)
Модель устройства: Desktop PC (x64-based)
Шаги воспроизведения / описание При подключении в TUN-режиме Incy запрашивает права администратора (диалог: "Для подключения VPN нужны права администратора (создание TUN-адаптера и настройка маршрутизации). Перезапустить INCY с правами администратора?"). После нажатия "Перезапустить от админа" и успешного перезапуска появляется ошибка: Connection failed: [SQLITE_READONLY] Attempt to write a readonly database (attempt to write a readonly database) === Окружение === Windows 11 Pro 25H2, сборка 26200.9457 Incy v3.8.6, путь установки: C:\Program Files\INCY\ Пользовательские данные: C:\Users\nikolanp\AppData\Local\Incy\incy.db === Причина === - Файл БД находится в C:\Users\<user>\AppData\Local\Incy\ (per-user расположение) - При автозапуске процесс работает от имени пользователя nikolanp с Medium Integrity Level - При повышении прав через UAC процесс перезапускается от имени Администратора (другой SID, High Integrity Level) - Несмотря на то, что: - Владелец файла: nikolanp - Группа BUILTIN\Администраторы имеет FullControl - Текущий пользователь имеет FullControl - SYSTEM имеет FullControl - High Mandatory Integrity Level был установлен на папку - Тест записи от админа в папку: ПРОЙДЕН - Elevated-инстанс Incy всё равно получает SQLITE_READONLY Это означает одно из: a) Incy использует ДРУГОЙ путь к БД при запуске от админа (например, через UAC Virtualization в %LOCALAPPDATA%\VirtualStore\) b) Incy использует connection string SQLite, которая принудительно включает read-only режим c) Incy кэширует состояние read-only до повышения прав и не обновляет d) Другой механизм блокирует запись, который стандартные ACL-инструменты не видят === Шаги воспроизведения === 1. Установить Incy v3.8.6 на Windows 11 25H2 2. Запустить Incy (без прав админа) — запускается успешно 3. Нажать "Перезапустить от админа" при запросе 4. После UAC-запроса Incy перезапускается 5. Нажать "Подключить" в TUN-режиме 6. Наблюдать: "Connection failed: [SQLITE_READONLY]" === Ожидаемое поведение === Incy должен либо: - Перенести БД в %PROGRAMDATA%\Incy\ (системное расположение, доступное и пользователю, и админу) - ИЛИ перенастраивать ACL на файле БД при повышении прав - ИЛИ выполнять операции с БД через impersonation исходного пользователя - ИЛИ работать целиком как Windows Service с admin-токеном, а UI общается через IPC === Фактическое поведение === Incy показывает общую ошибку SQLITE_READONLY без пути к файлу, без возможности восстановления и без понятного сообщения. === Предлагаемое исправление === 1. Логировать ТОЧНЫЙ путь к файлу SQLite-базы при возникновении SQLITE_READONLY 2. Логировать SID текущего пользователя процесса, integrity level и ACL на файле БД в момент ошибки 3. Перенести БД в %PROGRAMDATA%\Incy\ ИЛИ обеспечить, чтобы ACL включали и пользователя, и Администраторов с FullControl 4. Показывать более понятное сообщение с путём к файлу БД и кнопкой "Восстановить права" 5. Добавить опцию "Сбросить базу данных" в Настройки → Отладка === Применённое обходное решение === 1. taskkill /f /im incy.exe, /im browser.exe 2. takeown /f "%LOCALAPPDATA%\Incy" /r /d y 3. icacls "%LOCALAPPDATA%\Incy" /grant "%USERNAME%:(F)" /t /c 4. icacls "%LOCALAPPDATA%\Incy" /grant "BUILTIN\Administrators:(F)" /t /c 5. Удалить incy.db, incy.db-shm, incy.db-wal 6. Добавить Incy в исключения Windows Defender 7. Отключить Controlled Folder Access в Defender Даже после всех шагов ошибка SQLITE_READONLY периодически возвращается. Но на текущий момент не вопроизводилась
Комментарии (0)
Пока нет комментариев
Добавить комментарий