8

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

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

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

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

2 ответа2

10

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

Цитирование официальной статьи базы знаний 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, увлекся аналогией с квантовой механикой: фрагменты информации о недавно удаленных или недавно переименованных файлах хранятся в структурах данных, называемых "кварками".

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .