Как OneDrive делает свою папку неработоспособной для более старых версий Windows?

58

После обновления Windows 2017 Creators для Windows 10 папка OneDrive не может быть доступна с использованием предыдущих версий Windows. Эта странность описана на официальном сайте :

Если вы установили обновление Fall 2017 Creators для Windows 10 и синхронизируете файлы OneDrive на внешнем диске, возможно, вы не сможете открыть файлы OneDrive, если перенесете внешний диск на компьютер под управлением операционной системы, более ранней, чем обновление осень 2017 года Creators. для Windows 10.

Предложенный обходной путь: «Используйте компьютер, на котором установлено обновление осень 2017 г. для Windows 10 (или более поздней версии), чтобы открыть содержимое» .

Я успешно воспроизвел проблему с Windows 7, подключив жесткий диск с папкой OneDrive, созданной с помощью Windows 10 ранее. Теперь, когда я пытаюсь что-то сделать с каталогом (удалить его или cdв него), я получаю сообщение об ошибке:

The file cannot be accessed by the system.

В ФС нет логических ошибок chkdsk, я тоже владелец папки и имею все привилегии безопасности. Ни один процесс не использует объем. Несмотря на это, я ничего не могу сделать с этой (и только) папкой. Что такое механизм блокировки?

Enkryptor
источник

Ответы:

72

NTFS имеет функцию, называемую точками повторной обработки , в которой файл или каталог могут быть помечены для специальной обработки операционной системой. Он используется для реализации нескольких функций - например, точек монтирования тома (альтернатива букв Unix для букв дисков); соединения и символические ссылки; Редкие каталоги GitVFS; файлы, которые на самом деле хранятся внутри изображения WIM; файлы, которые были выгружены на ленту или другое медленное хранилище; и так далее.

В последних версиях OneDrive также используются точки повторной обработки для реализации «онлайн-файлов» - сначала они являются заполнителями, но загружаются по требованию. Более ранние версии делали это на уровне оболочки, которая не работала со многими программами; использование точки повторной обработки и перемещение автозагрузки в основную ОС делает их практически неотличимыми от локальных файлов.

Естественно, новые теги приведут к ошибке при доступе к пути через более старую ОС; Драйвер NTFS не знает, что делать с такими элементами, поэтому он просто отказывает в доступе. Например, может отображаться пустой каталог, но это может быстро привести к большему ущербу, когда более старая ОС пытается выполнить запись в него.

Вы можете использовать fsutil reparsepoint через Cmd, чтобы увидеть тег точки повторной обработки, если он есть, который прикреплен к файлу или каталогу.

grawity
источник
11
Ты был прав. fsutil reparsepoint query OneDriveпоказал данные и fsutil reparsepoint delete OneDriveуспешно "разблокировал" каталог.
энкриптор
1
Точки повторной обработки не являются расширяемыми / устанавливаемыми? Конечно, ОС Windows изначально не поддерживает GitVFS.
USR
3
Операционная система Windows действительно получила изменения для поддержки GitVFS. Во IIRC всегда было требование «минимальной версии Win10». Как и в случае с OneDrive, я предполагаю, что это частичная поддержка - возможность для пользовательского пространства или для пользовательских драйверов подключаться к ОС ... Не знаю, означает ли это поддержку произвольных точек повторной обработки или поддержку определенной точки повторной обработки, но позволяющую реализация может быть установлена.
grawity
4
@usr В дальнейшем ProjFS , вероятно, станет поддерживаемым вариантом для аналогичных функций, поскольку он может быть реализован исключительно в пользовательском режиме. Это еще не доступно в стабильном выпуске, все же. Сам ProjFS (был?) Реализован как драйвер фильтра файловой системы, который был доступен в качестве точки расширения для довольно многих версий Windows (я полагаю, возвращаясь к XP). В OneDrive используется (используется?) CldFlt («Драйвер мини-фильтра облачных файлов»).
Боб