Читатель обнаружил одну интересную особенность работы проводника Explorer в Windows 7 с сетевыми каталогами на файловом сервере. Проблема заключалась в том, что сразу после копирования/ перемещения каталога в сетевой папке, система отказывалась удалять или переименовывать его. Переименовать/удалить такой каталог можно только через некоторое время (1-5 минут).
При попытке удалить такой сетевой каталог появляется ошибка:
Операция не может быть завершена, поскольку эти папка или файл открыты в другой программе. Закройте папку или файл и повторите попытку.
Как оказалась загвоздка была связана с наличием файла Thumbs.db — файла с эскизами изображений. Операционная система Windows еще со времен Windows XP может создавать кэш с эскизами изображений (и других типов файлов) и хранить его в скрытом файле Thumbs.db каждого каталога. За счет использования кэша достигается сокращение времени на загрузку и отображение файлов эскизов в Проводнике. При отключенном кэше изображений , системе приходится каждый раз загружать файлы изображений и генерировать для них миниатюры, что затратно по ресурсам (особенно для папок с большим количеством изображений).
Но как, оказалось есть ситуации (KB2025703 — Renaming a network folder in Windows 7 Explorer fails with «the action can’t be completed…»), когда наличие файла thumbs.db с кэшем миниатюр мешает удалению или переименования каталогов из Проводника Windows.
Судя по всему системе требуется некоторое время на генерацию файла с кэшем миниатюр, в результате пока этот файл генерируется или обновляется, сделать что то с его родительским каталогом нельзя, пока не будет снята блокировка на запись с файла кэша.
В этом случае можно отключить автоматическую генерацию файла thumbs.db. на сетевых папках и дисках.
Отключаем создание файла Thumbs.db в сетевых папках с помощью GPO
Чтобы Windows Explorer при просмотре каталогов не создавал скрытый файл с кэшем эскизов изображений Thumbs.db, можно воспользоваться параметрами групповых политик.
Интересующие нас политики находятся в разделе редактора GPO:
- В Windows 7 (Vista ) нужные политики находятся в разделе — User Configuration -> Administrative Templates -> Windows Components -> Windows Explorer.
- В Windows 8 / Windows 10 – User Configuration -> Administrative Templates -> Windows Components -> File Explorer
Найдите и включите (переведите в Enable) следующие политики:
- Turn off the display of thumbnails and only display icons on network folders
- Turn off caching of thumbnails in hidden thumbs.db files
- Turn off the display of thumbnails and only display icons
В первую очередь нас интересует 1 политика, которая запрещает Проводнику создавать thumbs.db в сетевых каталогах.
Осталось назначить политику на пользователей и обновить ее на компьютерах (gpupdate /force)
Отключение создания Thumbs.db в сетевых папках через реестр
На домашних редакциях Windows, в которых отсутствует редактор групповой политики, отключить создание скрытых файлов thumbs.db можно через редактор реестра (regedit.exe).
Для этого в разделе HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\ создать подраздел Explorer (в Windows 7 он уже имеется), в котором создать ключ типа REG_DWORD с именем DisableThumbsDBOnNetworkFolders и значением 1
Эту же операцию можно выполнить одной командой:
reg add "HKCU\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v DisableThumbsDBOnNetworkFolders /d 0x1 /t REG_DWORD /f
Как удалить файлы Thumbs.db во всех каталогах
Существующие файлы Thumbs.db не удаляются автоматически после включения политики. Можно рекурсивно удалить все файлы Thumbs.db на определенном диске или в каталоге сервера с помощью PowerShell.
Перейдем в нужный каталог:
cd c:\share
Получим список всех Thumbs.dbGet-ChildItem -Path . -Include Thumbs.db -Recurse -Name -Force | Remove-Item –Force –WhatIF
Удалим найденные файлыGet-ChildItem -Path . -Include Thumbs.db -Recurse -Name -Force | Remove-Item –Force
для чего включать Turn off the display of thumbnails and only display icons, если она распространяется на локальный компьютер, не достаточно только включить Turn off the display of thumbnails and only display icons on network folders?
Не проверял, как действует первая политика по отношению к смонтированным сетевым дискам, поэтому отключить все. Если есть возможность, проверьте
Проблема с файлами Thumbs.db не только в сетевых папках. Но и в локальных.
Решаю проблему следующим образом — захожу в другую папку, возвращаюсь обратно и не заходя в целевую папку удаляю её. Винда при заходе в другую папку перестаёт мучить файл Thumbs.db в удаляемой папке и начинает мучить файл Thumbs.db в другой папке, соответственно нужную папку можно удалить спокойно.
То, что надо!!!
Хай.
Пришёл за командой PS.
Но,
Remove-Item : Не удается удалить элемент X:\_SCANDATA\JPEG\Thumbs.db: Процесс не может получить доступ
к файлу «X:\_SCANDATA\JPEG\Thumbs.db», так как этот файл используется другим процессом.
строка:1 знак:66
Все правильно, нужно применить политику на всех клиентах, чтобы они не генерировали файл Thumbs.db.
Если локально, нужно закрыть проводник и попробовать еще раз удалить. Как вариант — посмотреть кто держит файл темже ResourceExplorer либо FileMon
Уже локально. Перезапускал процесс explorer. Не помогло.
А всё ок теперь
Нелогично reg add «HKCU\SOFTWARE…
По умолчанию у юзера не должно быть прав на редактирование реестра, то есть запускать от админа, а при этом запуске редакция только админского профиля.
Надо выбирать GUID из списка юзеров HKU — тогда пойдет, ну или циклом прогнать
Это пример отключения создания Thumbs.db в сетевых папках для домашней редакции Windows. При желании, можно по аналогии можно распространить такую настройку реестра на пользователей домена через GP Preferences. Ну или пользоваться готовыми политиками GPO, описанными выше.
Так пользователь находится в своём окружении и правит часть реестра, которая только его и касается. Другое дело, что и там есть такие ветки и параметры, которые бы не стоило бы позволять править.