Bagaimana OneDrive membuat foldernya tidak berfungsi untuk versi Windows yang lebih lama?

58

Setelah Pembaruan Creator Musim Gugur 2017 untuk Windows 10 OneDrive folder tidak dapat diakses menggunakan versi Windows sebelumnya. Keanehan ini dijelaskan di situs resmi :

Jika Anda telah menginstal Pembaruan Fall 2017 Creators untuk Windows 10 dan Anda menyinkronkan file OneDrive ke drive eksternal, Anda mungkin tidak dapat membuka file OneDrive Anda jika Anda memindahkan drive eksternal ke komputer yang menjalankan sistem operasi yang lebih lama dari Fall 2017 Creators Update untuk Windows 10.

Solusi yang disarankan adalah "Gunakan komputer yang menjalankan Pembaruan Pembuat Musim Gugur 2017 untuk Windows 10 (atau yang lebih baru) untuk membuka konten" .

Saya telah berhasil mereproduksi masalah dengan Windows 7 dengan memasukkan hard drive dengan folder OneDrive, yang dibuat menggunakan Windows 10 sebelumnya. Sekarang, ketika saya mencoba melakukan sesuatu dengan direktori (hapus, atau cdke dalamnya), saya mendapatkan kesalahan:

The file cannot be accessed by the system.

Tidak ada kesalahan logis dalam FS menurut chkdsk, juga saya adalah pemilik folder dan memiliki semua hak istimewa keamanan. Tidak ada proses yang menggunakan volume. Apapun, saya tidak bisa melakukan apa-apa dengan folder ini (dan hanya). Apa mekanisme pemblokiran?

enkryptor
sumber

Jawaban:

72

NTFS memiliki fitur yang disebut titik reparse , di mana file atau direktori dapat ditandai untuk diproses khusus oleh sistem operasi. Ini digunakan untuk mengimplementasikan beberapa fitur - misalnya volume mount point (alternatif Unix-ish untuk huruf drive); persimpangan dan symlink; Direktori GitVFS yang jarang; file yang sebenarnya disimpan di dalam gambar WIM; file yang telah dimuat ke tape atau penyimpanan lambat lainnya; dan seterusnya.

Versi terbaru dari OneDrive juga menggunakan poin reparse untuk mengimplementasikan "file online" - mereka placeholder pada awalnya, tetapi diunduh sesuai permintaan. Versi sebelumnya melakukan ini pada level shell, yang tidak bekerja dengan banyak program; menggunakan titik reparse dan memindahkan pengunduhan otomatis ke OS inti membuat mereka hampir tidak bisa dibedakan dari file lokal.

Tag baru secara alami akan menghasilkan kesalahan ketika jalur diakses melalui OS yang lebih lama; pengandar NTFS tidak tahu apa yang harus dilakukan dengan barang-barang tersebut, jadi itu hanya menolak akses. Itu bisa menunjukkan misalnya direktori kosong, tapi itu bisa dengan cepat menghasilkan lebih banyak kerusakan ketika OS yang lebih tua mencoba untuk menulis padanya.

Anda dapat menggunakan fsutil reparsepoint melalui Cmd untuk melihat tag titik reparse, jika ada, yang telah dilampirkan ke file atau direktori.

grawity
sumber
11
Anda benar. fsutil reparsepoint query OneDrivemenunjukkan data, dan fsutil reparsepoint delete OneDriveberhasil "membuka" direktori.
enkryptor
1
Apakah poin reparse tidak dapat dikembangkan / diinstal? Tentunya, OS Windows tidak mendukung GitVFS.
usr
3
OS Windows ternyata menerima perubahan untuk mendukung GitVFS. IIRC, selalu memiliki persyaratan "versi Win10 minimum". Seperti dengan OneDrive, saya menganggap itu dukungan parsial - kemampuan untuk userspace atau driver kustom untuk terhubung ke OS ... Tidak tahu apakah itu berarti mendukung poin reparasi sewenang-wenang, atau jika itu berarti mendukung titik reparse tertentu tetapi membiarkan implementasi dapat diinstal.
grawity
4
@ usr Maju ke depan, ProjFS kemungkinan akan menjadi opsi yang didukung untuk fitur serupa, karena dapat diterapkan murni dalam mode pengguna. Ini belum tersedia dalam rilis stabil. ProjFS sendiri diimplementasikan sebagai driver filter sistem file, yang telah tersedia sebagai titik ekstensi untuk beberapa versi Windows (kembali melalui XP, saya percaya). OneDrive sendiri menggunakan (digunakan?) CldFlt ("Cloud Files Mini Filter Driver").
Bob