Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Странное кеширование файла (http://forum.oszone.net/showthread.php?t=186371)

Grem007 24-09-2010 15:07 1503345

Странное кеширование файла
 
Здравствуйте.

Имеем такую проблему, есть файл Акцесса(.mdb) лежит он в папке C:\ProgramData\некое имя\файл.mdb
Файл, база которая работает с sql сервером(не суть важно)

Проблема в том, что на некоторых машинах под 7 этот файл при открытии, открывается не актуальной версии!(актуальная версия заливается при загрузке компьютера, тут все ок), и тут начинается самое интересное: если файл переименовать(изменить хоть 1 символ в названии, или переместить в другое место) то при его открытии откроется та самая актуальная версия, которая нужна. Если название файла вернуть обратно(или переместить его обратно в ту папку), магия начинается вновь - открывается старый файл.

На машинах установлен офис хп или 2003

Подскажите куда копать, уже сломали себе весь мозг всем отделом

Valeant 24-09-2010 18:42 1503463

Странное у вас поведение.

Цитата:

актуальная версия заливается при загрузке компьютера, тут все ок.... но при открытии, открывается не актуальной версии
Да есть такая штука как superfetch - предварительная загрузка программ в память ПК при анализе его работы (т.е. после несколько раз перезапуска ПК формируется база \windows\prefetch\*.pf по часто используемым программам которые использует пользователь, и при последующем перезапуске после того как ПК будет загружен в фоновом режиме (с низким приоритетом) не мешая пользователю система продолжит загрузку необходимых программ которые пользователь использовал при своей работе в память "кэш", когда пользователь решит воспользоваться программой то она запустится не с винта, а из данного "кэша").
Данная работа некоем образом не сказывается на работе с файлами, которую вы описываете выше.

Например при работе с тем же продуктом например с Excel открываем локальный файл - делаем в нем изменения - записываем файл (происходит изменение его атрибутов : LastAccessTime, LastWriteTime, ChangeTime и т.д.) при работе с фалами используется функция QueryBasicInformationFile.
При рутинной работе с данным файлом с одним и тем же именем и при его чтении а потом записи все будет происходить как и положено, т.е. данные в файле будут содержать последние изменения и естественно LastWriteTime, ChangeTime будут равны.
После записи файла
CreationTime: 24.09.2010 10:45:55
LastAccessTime: 24.09.2010 18:16:03
LastWriteTime: 24.09.2010 18:16:03
ChangeTime: 24.09.2010 18:16:03

После простого просмотра изменения данных но без записи
CreationTime: 24.09.2010 10:45:55
LastAccessTime: 24.09.2010 18:20:41
LastWriteTime: 24.09.2010 18:16:03
ChangeTime: 24.09.2010 18:16:03

Я бы тоже так поступил наверное если LastWriteTime = ChangeTime то изменений нет, все это для локальных файлов, без примочек для работы с SQL.

Цитата:

Если название файла вернуть обратно(или переместить его обратно в ту папку), магия начинается вновь - открывается старый файл.
Ну тут вообще магия.

После изменения файла (т.е. переименования файла -> А -> опять в первоначальное имя)
CreationTime: 24.09.2010 10:45:55
LastAccessTime: 24.09.2010 18:38:41
LastWriteTime: 24.09.2010 18:16:03
ChangeTime: 24.09.2010 18:38:25

Чуть не забыл: была такая оптимизация - Не производить запись последнего доступа к файлам - отключалась в реестре
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem параметр NtfsDisableLastAccessUpdate = 1

Grem007 28-09-2010 12:44 1506407

Нашел решение проблемы. Во всем виновата папка VirtualStore, про нее достаточно все хорошо описано в разных источниках.


Время: 21:15.

Время: 21:15.
© OSzone.net 2001-