На днях словил неприятное ощущение холодка, пробежавшего по спине, когда не смог запустить KeePass со своими паролями.
И вот при запуске программы я получаю ошибку:
"Том для открытого файла был изменён извне, поэтому работа с этим файлом невозможна".
Текст неинформативен. Сразу почитал поисковики и ИИ на эту тему. Конкретики нет, обычно ошибка связана с хранением данных на съёмных носителях и их повреждением. Ну, думаю, ладно. Наверное что-то сломалось в момент синхронизации. Посмотрю в другом месте. У меня как минимум 3 активные копии этой директории диска, плюс бэкапы.
Захожу на ноутбук, за которым работал накануне и там запускал KeePass. Подумал, что после работы на нём у меня на компьютер переехала повреждённая копия из-за каких-то проблем синхронизации. Но на ноутбуке она точно живая, вчера я её запускал. Не должна поломаться. Гружу ноутбук, запускаю, а там та же ошибка.
Тут я уже напрягся, потому что история принимает неприятный оборот. На ноутбуке самая актуальная версия. Вчера работала - сегодня нет. При этом файлы не менялись. В корзине диска ничего нет.
Гружу виртуалку, которая периодически скачивает для бэкапа к себе данные, потом выключается. То есть она не висит запущенной в режиме реального времени. Последних изменений там нет, которые могли произойти на ноутбуке и сломать работу. Там должна быть гарантированно работающая версия. Запускаю её и вижу ту же ошибку.
Я уже серьёзно напрягся, потому что ситуация совершенно непонятна. Как может не работать версия программы, которая ещё недавно работала? Свежие изменения, которые теоретически могли её поломать, туда просто не приехали. А та версия, что есть, ещё недавно нормально работала.
Скачиваю чистую версию KeePass с сайта, как я обычно делаю при обновлении, и подкидываю туда по привычке 3 файла:
◽️KeePass.config.xml - настройки;
◽️KeePass.exe.config - конфиг экзешника;
◽️baza.kdbx - база с паролями.
Запускаю программу и опять получаю эту же ошибку. Тут я уже начинаю паниковать, потому что не понимаю, как мне теперь увидеть пароли. Это, конечно, не трагедия, потому что как минимум пароли ключей и email я знаю наизусть, а в связке с телефоном они позволяют всё восстановить, но тем не менее, это огромный труд. Там сотни паролей от серверов и сервисов. Всё это сбрасывать - мрак. Поднимаю бэкап от конца марта, запускаю, работает. Как минимум всё сбрасывать не придётся.
Немного успокоился и стал соображать. Запустил чистую версию без своих настроек - работает. Подкинул базу паролей - открывается. ОТЛЕГЛО. Лёг спать, потому что уже поздно было. Я бы не уснул, если пароли не увидел.
Утром выяснил, что проблема с файлом KeePass.exe.config, который в актуальной версии почему-то пустой, нулевого размера. В бэкапе от марта в нём есть данные, как и в архиве с сайта. В этом файле хранятся настройки экзешника. Там в том числе указано, с какой версией .NET Framework работает KeePass.
Причиной моих проблем, судя по всему, стало последнее обновление Windows, которое я установил на всех устройствах, где запускал KeePass и получал эту ошибку. Точно помню, что там маячили уведомления о перезагрузке и установке обновлений, что я и проделал. Это обновление то ли каким-то образом обнулило этот файл, то ли сделало невозможным запуск без информации в этом файле, которая раньше не требовалась.
Первый раз столкнулся с проблемами KeePass. Очень много лет им пользуюсь, и всегда всё работало чётко. Эта история заставила пересмотреть подход к хранению паролей. Вывода сделал два:
1️⃣ Основная рабочая директория должна располагаться не на Яндекс.Диске, а копироваться туда после изменений.
2️⃣ Периодически надо делать выгрузку паролей из программы, упаковывать их в шифрованный архив и хранить отдельно.
#password