Неправильная дата создания файлов в Windows при копировании файлов, если файл уже существовал

9

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

У меня есть две папки на рабочем столе, папка 1 и папка 2. Я создаю новый текстовый файл в папке 1 с именем 852pm (или всякий раз, когда он был создан). Я копирую файл в папку 2. Скопированный файл имеет правильную дату создания. Я удаляю скопированный файл, подожду минуту и ​​скопирую его снова. Дата создания неверна. Дата создания - из удаленного файла.

Сначала я попытался очистить корзину, но это не сработало. И иногда при создании нового файла с тем же именем отображается старая дата создания (и с новой измененной датой).

Почему это происходит? Как я могу заставить новые файлы в этой ситуации показывать правильные даты создания?

theMaxx
источник

Ответы:

11

Файловое туннелирование

Цитируя официальную статью базы знаний, Windows NT содержит возможности туннелирования файловой системы :

Это происходит после удаления или переименования и повторного введения новой записи каталога с этой метаинформацией (если происходит создание или переименование, что приводит к повторному появлению файла с таким именем в течение короткого периода времени).

Идея состоит в том, чтобы имитировать поведение программ MS-DOS, когда они используют безопасный метод сохранения. Они копируют измененные данные во временный файл, удаляют оригинал и переименовывают временный в оригинал. Похоже, это будет оригинальный файл после завершения. Windows выполняет туннелирование в файловых системах FAT и NTFS, чтобы обеспечить сохранение длинных / коротких имен файлов при выполнении этой безопасной операции сохранения 16-разрядными приложениями.

В статье также объясняется, как увеличить время кэширования или вообще отключить возможности туннелирования.

Отключить туннелирование файлов

  1. Нажмите Win+ R, введите regedit, а затем нажмите ОК .

  2. Перейдите к следующему разделу реестра:

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem
    
  3. Щелкните правой кнопкой мыши пустую область на правой панели и выберите « Создать»> «Значение DWORD (32-разрядное)» .

  4. Назовите новое значение MaximumTunnelEntries.
    Убедитесь, что установлено 0: это означает, что никакие туннельные записи не будут созданы.

Дополнительная информация

Название «туннелирование» происходит от квантовой механики (довольно круто):

Разработчик, отвечавший за реализацию туннелирования в Windows 95, увлекся аналогией с квантовой механикой: фрагменты информации о недавно удаленных или недавно переименованных файлах хранятся в структурах данных, называемых «кварками».

Источник: Апокрифическая история туннелирования файловой системы.

дальнейшее чтение

edelwater
источник
0

Вы можете обновить время создания с помощью этой команды вручную:

powershell (ls YourFile.txt).CreationTime = Get-Date

... и то же самое в командном файле:

call powershell "(ls YourFile.txt).CreationTime = Get-Date"
bpelhos
источник