Direktori yang tidak tersembunyi tidak ditampilkan di Explorer, tetapi program yang membuatnya dapat mengaksesnya

26

Saya menggunakan IMAPSize untuk membuat cadangan kotak surat saya. Proses hanya membuang isi kotak surat Anda ke .emlfile di disk Anda. Bagaimanapun, kotak surat pertama yang saya cadangkan muncul seperti yang saya harapkan. Namun, yang berikutnya tidak muncul di Explorer dan, jika saya memasukkannya di bilah alamat, itu memberitahu saya bahwa itu tidak ada.

Namun, IMAPSize bersikeras bahwa file itu ada di sana. (Banyak penulisan disk sedang dilakukan selama operasi.) Selain itu, direktori tidak muncul dalam dialog direktori Windows dan - karena saya memiliki alat GNU diinstal - itu menunjukkan ls(tetapi tidak dalam bahasa asli dir). Saya tidak dapat cdmasuk ke direktori, tetapi lstampaknya dapat mengaksesnya (dan, memang, direktori dan file yang saya harapkan tampaknya ada di sana).

jendela command prompt menunjukkan daftar

Juga perhatikan bahwa cap waktu dan file dari backup.dbberbeda dalam dirdan ls -loutput.

Singkatnya: Apa yang terjadi di sini dan bagaimana cara memperbaikinya !?

Xophmeister
sumber
1
Satu-satunya perbedaan mencolok yang saya lihat adalah bahwa ls -lmenunjukkan sejumlah hardlink khusus ke direktori dan file "tersembunyi" ... Saya tidak tahu mengapa begitu, atau bagaimana hardlink bahkan ditafsirkan dalam tanah-NTFS.
Xophmeister
... Hanya untuk mengonfirmasi: Saya dapat mengakses data dalam file "tersembunyi", dari baris perintah, menggunakan cat(GNU coreutil lain). Namun, sekali lagi, alat Windows asli (misalnya, type) bahkan tidak dapat menemukan file.
Xophmeister

Jawaban:

63

Biar saya tebak: program yang membuat file, dan juga utilitas GNU, tidak berjalan sebagai administrator.

Pertama, beberapa sejarah. Pada masa Windows XP, banyak program berasumsi mereka akan selalu dijalankan sebagai admin, dan akan menulis ke tempat-tempat seperti C:\Windowsdan C:\Program Files (x86)dengan pengabaian liar. Dengan Vista, Microsoft mencoba membuat lebih sedikit orang admin, tetapi pengguna standar tidak dapat menulis ke tempat-tempat itu. Mereka membutuhkan program-program meragukan itu agar tetap berfungsi (atau orang tidak mau memutakhirkan). Jadi, mereka memperkenalkan fitur ajaib yang disebut virtualisasi UAC .

Program berjalan sebagai pengguna standar mungkin berpikir tulisan mereka ke lokasi penting berhasil, tetapi pada kenyataannya, Windows menyemprotkan data di lokasi per pengguna. Ketika program-program mencari file di direktori, Windows memeriksa untuk melihat apakah ada file di toko virtual tempat itu, dan jika demikian, itu menambahkannya ke daftar direktori. (Ada fungsi yang setara untuk Registry.)

Sepertinya program surat Anda mencoba menulis ke suatu tempat di bawah Program Files (x86)ketika berjalan sebagai pengguna biasa. Tulisan itu diarahkan, sehingga tidak benar-benar pergi ke tempat itu. Program ini masih dapat melihatnya, karena Windows menjaga ilusi untuk itu. Explorer tidak melihatnya karena mengumumkan ke sistem operasi bahwa itu berperilaku baik dan jadi tidak perlu pengalihan. Perintah command prompt dirbukanlah program (ini hanya fitur cmd.exe), sehingga juga dianggap "dalam pengetahuan" dan tidak ditampilkan file kompatibilitasnya. lsadalah program yang, jelas, tidak di ketahui, sehingga bisa melihat file kompatibilitas.

Anda akan menemukan file Anda di sini:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

Saat mencari-cari VirtualStore, Anda mungkin akan terkejut dengan program apa yang tidak berperilaku baik dan membutuhkan jaring pengaman virtualisasi.

Jika Anda ingin menghentikan pengalihan, jalankan program sebagai administrator, atau simpan cadangan Anda di lokasi yang Anda dapat benar-benar menulisnya tanpa hak admin.

Ben N
sumber
16
Dan di sini saya pikir saya tahu Windows. Entah ini lelucon bodoh yang dilakukan dengan april, atau aku belajar sesuatu yang penting hari ini. terima kasih, @Ben N!
Aganju
3
@ Agganju Beberapa bulan yang lalu saya harus membantu pengguna Windows membuat keypair untuk WinSCP. Dan mereka menjadi tidak terlihat dengan cara yang sama seperti yang dijelaskan dalam pertanyaan. Pada saat itu saya membuat hipotesis penjelasan yang hampir sama dengan yang diberikan dalam jawaban ini. Saya tidak repot-repot memverifikasi hipotesis saya, karena masalahnya diselesaikan dengan meletakkan file di bawah direktori home pengguna. Tapi setidaknya saya bisa memastikan bahwa jawaban ini sama sekali tidak seperti lelucon bagi saya.
kasperd
3
Yah aku akan terkutuk! Itu mereka semua. Itu perilaku yang aneh , bahkan jika itu dimaksudkan. Saya pikir saya memiliki kesalahan sistem file! ... Ini juga akan menjelaskan mengapa cadangan kotak surat pertama saya muncul: Program ini pertama kali dijalankan dari installer ("Apakah Anda ingin menjalankan ini-dan-itu sekarang?"), Yang akan mengangkatnya untuk memiliki hak istimewa Administrator; sedangkan proses "tersembunyi" adalah sebagai pengguna lokal.
Xophmeister
1
@ Aganju, saya kira Anda tidak pernah menggunakan Vista banyak. Itu memiliki fitur untuk menampilkan file tervirtualisasi pada Anda; karena masalah itu cukup umum selama beberapa tahun. Pada saat Win7 muncul, perangkat lunak yang paling banyak digunakan berhenti berasumsi ia dapat menulis ke subfolder dari direktori instalasinya; dan fitur telah dibuat secara signifikan kurang terlihat atau mungkin langsung dihapus di versi Windows terbaru.
Dan Neely
4
@ Xophmeister Ini adalah trade-off. Seperti disebutkan dalam jawaban, penulisan perangkat lunak ke direktori aplikasi sendiri adalah hal yang lumrah sebelum Vista. Ini adalah lubang keamanan besar, jadi harus dipecahkan. Alternatifnya adalah 1) mencegah penulisan dan memecah semua aplikasi, 2) menggunakan virtualisasi untuk menyimpan file di lokasi yang aman. 1) jelas tidak bisa dipertahankan dan sangat bertentangan dengan SOP Microsoft, dan pada akhirnya itu hanya akan menyebabkan semua orang menjalankan segala sesuatu di bawah administrator seperti sebelumnya lagi. Ini bisa membingungkan, tapi itu mungkin masih pilihan terbaik. Jangan menulis ke direktori berbahaya.
Luaan