Виртуализация каталогов в Windows

В очередной раз, производя отладку одной из своих программ, я столкнулся с тем, что приложение не видит изменений, которые я вношу в INI файл. При этом сама программа может туда писать и оттуда затем считывать эти данные, однако в файле они не отображаются. Перебрав весь исходный код, проблемы со своей стороны я так и не нашёл. Создалось ощущение, что по одному и тому же пути существуют два файла с одинаковыми именами, но имеющие разное содержимое. Открываю файл в HEX-редакторе, потом этот же самый файл в другом… Файл разный!


hexed
hexed2

В разных файл-менеджерах файл имеет разный размер.
И тут я натолкнулся на статью Folder Virtualization in Windows Vista. В общем, начиная с Windows Vista, если программа не может получить доступ на запись в файл, то создаётся копия файла в специальном хранилище и она пишет туда. То есть одновременно существуют две разных копии одного файла, но под одним именем. Операционная система подсовывает виртуальный файл тем программам, у которых ограниченный доступ, остальным — отдаёт настоящий файл.
Расположены эти файлы по следующему пути: C:\Users\{имя пользователя}\AppData\Local\VirtualStore\

Похожие записи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *