Неправильная дата создания файлов в Windows при копировании файлов, если файл уже существовал
У меня проблема при копировании файлов (или создании новых файлов) в Windows 7. Если я копирую файл, я ожидаю, что созданная дата будет правильной, но иногда это не так. Обычно это работает, но вот пример того, когда это не работает:
У меня есть две папки на рабочем столе, папка 1 и папка 2. Я создаю новый текстовый файл в папке 1 с именем 852pm (или всякий раз, когда он был создан). Я копирую файл в папку 2. Скопированный файл имеет правильную дату создания. Я удаляю скопированный файл, подожду минуту и скопирую его снова. Дата создания неверна. Дата создания - из удаленного файла.
Сначала я попытался очистить корзину, но это не сработало. И иногда при создании нового файла с тем же именем отображается старая дата создания (и с новой измененной датой).
Почему это происходит? Как я могу заставить новые файлы в этой ситуации показывать правильные даты создания?
2 ответа
Файловое туннелирование
Цитирование официальной статьи базы знаний Windows NT содержит возможности туннелирования файловой системы:
Это происходит после удаления или переименования и повторного введения новой записи каталога с этой метаинформацией (если происходит создание или переименование, что приводит к повторному появлению файла с таким именем в течение короткого периода времени).
Идея состоит в том, чтобы имитировать поведение программ MS-DOS, когда они используют безопасный метод сохранения. Они копируют измененные данные во временный файл, удаляют оригинал и переименовывают временный в оригинал. Похоже, это будет оригинальный файл после завершения. Windows выполняет туннелирование в файловых системах FAT и NTFS, чтобы гарантировать сохранение длинных / коротких имен файлов, когда 16-разрядные приложения выполняют эту безопасную операцию сохранения.
В статье также объясняется, как увеличить время кэширования или вообще отключить возможности туннелирования.
Отключить туннелирование файлов
Нажмите Win+R, введите
regedit
и нажмите кнопку ОК.Перейдите к следующему разделу реестра:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem
Щелкните правой кнопкой мыши пустую область на правой панели и выберите " Создать"> "Значение DWORD (32-разрядное)".
Назовите новое значение
MaximumTunnelEntries
,
Убедитесь, что установлено0
: это означает, что никакие туннельные записи не будут созданы.
Дополнительная информация
Название "туннелирование" происходит от квантовой механики (довольно круто):
Разработчик, отвечавший за реализацию туннелирования в Windows 95, увлекся аналогией с квантовой механикой: фрагменты информации о недавно удаленных или недавно переименованных файлах хранятся в структурах данных, называемых "кварками".
Источник: Апокрифическая история туннелирования файловой системы.
дальнейшее чтение
Вы можете обновить время создания с помощью этой команды вручную:
powershell (ls YourFile.txt).CreationTime = Get-Date
... и то же самое в командном файле:
call powershell "(ls YourFile.txt).CreationTime = Get-Date"