W jaki sposób OneDrive sprawia, że ​​jego folder nie działa w starszych wersjach systemu Windows?

58

Po aktualizacji 2017 dla twórców aktualizacji dla systemu Windows 10 do folderu OneDrive nie można uzyskać dostępu za pomocą wcześniejszych wersji systemu Windows. Ta dziwność została opisana na oficjalnej stronie :

Jeśli masz zainstalowaną aktualizację Fall 2017 Creators Update dla systemu Windows 10 i synchronizujesz pliki OneDrive z dyskiem zewnętrznym, możesz nie być w stanie otworzyć plików OneDrive, jeśli przeniesiesz dysk zewnętrzny na komputer z systemem operacyjnym starszym niż Fall 2017 Creators Update dla Windows 10.

Sugerowane obejście to „Użyj komputera z aktualizacją Fall 2017 Creators Update dla systemu Windows 10 (lub nowszego), aby otworzyć zawartość” .

Z powodzeniem odtworzyłem problem z Windows 7, podłączając dysk twardy z folderem OneDrive, utworzonym wcześniej w systemie Windows 10. Teraz, gdy próbuję coś zrobić z katalogiem (usunąć go lub cddo niego) , pojawia się błąd:

The file cannot be accessed by the system.

Według FS nie ma błędów logicznych chkdsk, jestem także właścicielem folderu i mam wszystkie uprawnienia bezpieczeństwa. Żadne procesy nie używają woluminu. Niezależnie od tego, nie mogę nic zrobić z tym (i tylko) folderem. Co to jest mechanizm blokujący?

enkryptor
źródło

Odpowiedzi:

72

NTFS ma funkcję zwaną punktami ponownej analizy , w której plik lub katalog może zostać oznaczony do specjalnego przetwarzania przez system operacyjny. Służy do implementacji kilku funkcji - np. Punktów montowania woluminów (uniksowa alternatywa dla liter napędowych); skrzyżowania i dowiązania symboliczne; Rzadkie katalogi GitVFS; pliki, które są faktycznie przechowywane w obrazie WIM; pliki, które zostały rozładowane na taśmę lub inne wolne miejsce; i tak dalej.

Najnowsze wersje OneDrive również wykorzystują punkty ponownej analizy do implementacji „plików online” - początkowo są to symbole zastępcze, ale pobierane na żądanie. Wcześniejsze wersje robiły to na poziomie powłoki, co nie działało z wieloma programami; użycie punktu ponownej analizy i przeniesienie automatycznego pobierania do podstawowego systemu operacyjnego sprawia, że ​​są one prawie nie do odróżnienia od plików lokalnych.

Oczywiście nowe tagi spowodują błąd, gdy ścieżka będzie dostępna przez starszy system operacyjny; sterownik NTFS nie wie, co zrobić z takimi elementami, więc po prostu odrzuca dostęp. Może pokazywać np. Pusty katalog, ale może to szybko spowodować większe szkody, gdy starszy system operacyjny próbuje do niego pisać.

Możesz użyć fsutil reparsepoint przez Cmd, aby zobaczyć znacznik punktu ponownej analizy, jeśli taki istnieje, który został dołączony do pliku lub katalogu.

grawitacja
źródło
11
Miałeś racje. fsutil reparsepoint query OneDrivepokazał dane i fsutil reparsepoint delete OneDrivepomyślnie „odblokował” katalog.
enkryptor
1
Czy punktów ponownej analizy nie można rozszerzać / instalować? Z pewnością system operacyjny Windows nie obsługuje natywnie GitVFS.
usr
3
System operacyjny Windows faktycznie otrzymał zmiany w celu obsługi GitVFS. IIRC zawsze wymagało „minimalnej wersji Win10”. Podobnie jak w przypadku OneDrive, zakładam, że jest to częściowe wsparcie - zdolność przestrzeni użytkownika lub niestandardowych sterowników do przyłączenia się do systemu operacyjnego ... Nie wiem, czy oznacza to obsługę dowolnych punktów ponownej analizy, czy też oznacza obsługę określonego punktu ponownej analizy, ale pozwala wdrożenie może być instalowane.
grawitacja
4
@usr W przyszłości ProjFS będzie prawdopodobnie obsługiwaną opcją dla podobnych funkcji, ponieważ można go zaimplementować wyłącznie w trybie użytkownika. Jednak nie jest jeszcze dostępny w stabilnej wersji. Sam ProjFS jest (był?) Zaimplementowany jako sterownik filtru systemu plików, który był dostępny jako punkt rozszerzenia dla kilku wersji Windows (jak sądzę, poprzez XP). OneDrive sam używa (używane?) CldFlt („Sterownik mini-filtrów plików w chmurze”).
Bob