Файл thumbs.db і проблема з видаленням мережевих папок

Читач виявив одну цікаву особливість роботи провідника Explorer в Windows 7 з мережевими каталогами на файловому сервері. Проблема полягала в тому, що відразу після копіювання / переміщення каталогу в мережевій теці, система відмовлялася видаляти або перейменовувати його. Перейменувати / видалити такий каталог можна тільки через деякий час (1-5 хвилин).

При спробі видалити такий мережевий каталог з'являється помилка:

The action can not be completed because the folder or a file in it is open in another program. Close the file or folder and try again.Папка вже використовується.
Операція не може бути завершена, оскільки ці папка або файл відкриті в іншій програмі. Закрийте папку або файл і спробуйте ще раз.

Як виявилася заковика була пов'язана з наявністю файлу Thumbs.db  -  файлу з ескізами зображень. Операційна система Windows ще з часів Windows XP може створювати кеш з ескізами зображень (і інших типів файлів) і зберігати його в прихованому файлі Thumbs.db кожного каталогу. За рахунок використання кешу досягається скорочення часу на завантаження і відображення файлів ескізів в Провіднику. При відключеному кеші зображень, системі доводиться кожен раз завантажувати файли зображень і генерувати для них мініатюри, що затратно по ресурсам (особливо для папок з великою кількістю зображень).

Але як, виявилося є ситуації (KB2025703 - Renaming a network folder in Windows 7 Explorer fails with «the action can not be completed ...»), коли наявність файлу thumbs.db з кешем мініатюр заважає видаленню або перейменування каталогів з Провідника Windows.

Судячи з усього системі потрібен якийсь час на генерацію файлу з кешем мініатюр, в результаті поки цей файл генерується або оновлюється, зробити що то з його батьківським каталогом можна, поки не буде знято блокування на запис з файлу кеша.

В цьому випадку можна відключити автоматичну генерацію файлу thumbs.db. на мережевих папках і дисках.

зміст:

  • Відключаємо створення файлу Thumbs.db в мережевих папках за допомогою GPO
  • Відключення створення Thumbs.db в мережевих папках через реєстр
  • Як видалити файли 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.db
Get-ChildItem -Path. -Include Thumbs.db -Recurse -Name -Force | Remove-Item -Force -WhatIF

Видалимо знайдені файли
Get-ChildItem -Path. -Include Thumbs.db -Recurse -Name -Force | Remove-Item -Force