Суть проблемы
Ситуация знакома многим: вы удаляете файл report.txt, через пару секунд создаёте новый файл с тем же именем в той же папке, и вдруг в свойствах видите, что дата создания указывает на вчерашний день, хотя файл только что появился. Это не баг и не глюк файловой системы, а специально встроенный в NTFS и FAT механизм под названием File System Tunneling (туннелирование файловой системы).
Инженер Microsoft Реймонд Чен, работающий в компании с 1992 года, ещё в 2005 году объяснял этот механизм, сравнивая его с квантовым туннелированием: информация как будто уничтожается при удалении файла, а затем восстанавливается «по другую сторону временного барьера».
Как это работает технически
При удалении или переименовании файла Windows создаёт запись в специальном кеше на уровне тома, туннельном кеше. Если в течение короткого окна (по умолчанию 15 секунд) в той же папке создаётся новый файл с тем же именем, система переносит на него часть метаданных старого файла: дату создания и связку между длинным и коротким (8.3) именем файла.
Официальная документация Microsoft по FileSystemInfo.CreationTime описывает это так: NTFS-тома могут временно кешировать метаданные файла, включая дату создания, и такой процесс называется туннелированием.
Важно понимать: содержимое удалённого файла не восстанавливается, туннелирование переносит только метаданные, и то в очень узком временном окне.
Механизм срабатывает на конкретных парах операций:
- удаление(имя) → создание(имя)
- удаление(имя) → переименование(источник, имя)
- переименование(имя, новое_имя) → создание(имя)
- переименование(имя, новое_имя) → переименование(источник, имя)
Зачем это вообще нужно
Причина существования этого механизма практичная. Многие программы не редактируют файл на месте, а используют так называемый безопасный метод сохранения (safe save): создают временный файл с новым содержимым, удаляют оригинал, затем переименовывают временный файл в исходное имя. Для пользователя это выглядит как обычное редактирование и сохранение документа, но с точки зрения файловой системы файл был создан, удалён и переименован.
Без туннелирования такой файл каждый раз получал бы новую дату создания, хотя пользователь просто открыл и сохранил уже существующий документ. Вторая причина связана со старыми 16-битными приложениями, которые понимали только короткие DOS-имена (формат 8.3): без туннелирования такая программа могла случайно разорвать связь между длинным и коротким именем файла.
Как отключить туннелирование, если оно мешает
Для большинства пользователей это поведение безобидно и даже полезно. Но если оно создаёт проблемы, например, в скриптах резервного копирования, которые полагаются на точные метки времени создания файлов, механизм можно отключить через реестр.
- Откройте редактор реестра (
regedit) с правами администратора. - Перейдите к разделу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
- Создайте новый параметр DWORD (32 бита) с именем MaximumTunnelEntries и значением
0, это полностью отключает механизм. - Если нужно не отключить, а только изменить окно кеширования (по умолчанию 15 секунд), создайте параметр MaximumTunnelEntryAgeInSeconds и укажите нужное количество секунд.
- По умолчанию оба параметра в реестре отсутствуют, их наличие само по себе означает, что кто-то ранее уже менял поведение туннелирования на этой машине.
Изменения вступают в силу без перезагрузки, но для чистоты эксперимента лучше всё же перезапустить систему.
Что ещё нужно знать
Это влияет на безопасность или приватность?
Нет, туннелирование не восстанавливает содержимое удалённых файлов, только небольшой набор метаданных на очень короткое время. Для полноценного безвозвратного удаления данных это не относится ни к плюсам, ни к минусам.
Стоит ли отключать туннелирование на обычном домашнем компьютере?
Обычно нет смысла, механизм работает в фоне и не создаёт проблем в повседневном использовании. Отключать стоит только при конкретной необходимости, например, при разработке ПО, чувствительного к точным меткам времени, или в специфичных сценариях цифровой криминалистики.
Работает ли туннелирование на всех файловых системах?
Механизм относится к NTFS и FAT, актуален для стандартной установки Windows на этих файловых системах.
Если я найду эти параметры реестра на чужом компьютере, это подозрительно?
Само по себе наличие параметров MaximumTunnelEntries/MaximumTunnelEntryAgeInSeconds в реестре означает, что кто-то осознанно менял поведение по умолчанию, это иногда используется как индикатор в задачах цифровой криминалистики, но само по себе не доказывает злого умысла.
Что в итоге
File System Tunneling существует в Windows десятилетиями и решает вполне конкретную практическую задачу: сохранять корректные метаданные файлов при обычном паттерне «сохранить документ», который на уровне файловой системы выглядит как удаление и пересоздание. Если это поведение мешает именно вам, два параметра реестра выше решают вопрос за пару минут, но в большинстве случаев трогать этот механизм не нужно.






