Не прихований каталог не відображається в Провіднику, але програма, яка його створила, може отримати доступ до нього


26

Я використовую IMAPSize для резервного копіювання своїх поштових скриньок. Процес просто скидає вміст поштової скриньки у .emlфайли на диску. У будь-якому випадку перша поштова скринька, яку я створив, створила, як я очікувала. Однак наступний не відображається в Провіднику, і якщо я введіть його в адресному рядку, він підкаже мені, що його не існує.

Однак IMAPSize наполягає на тому, що файли є. (Під час операції було виконано багато запису дисків.) Більше того, каталог дійсно з’являється в діалоговому вікні каталогу Windows і - як у мене встановлені інструменти GNU - він відображається в ls(але не в рідному dir). Я не можу cdпотрапити в каталог, але ls, здається, не можу отримати доступ до нього (і, справді, каталоги та файли, які я, начебто, є там).

вікно командного рядка, що показує списки

Також зауважте, що часова марка та розмір файлів backup.dbуdir та ls -lвихідними.

Коротше кажучи: що тут відбувається і як це виправити !?


1
Єдина помітна різниця, яку я бачу, полягає в тому, що ls -lпоказує особливу кількість жорстких посилань на "приховані" каталоги та файли ... Я не знаю, чому це так, і як жорстке посилання навіть інтерпретується в NTFS-land.
Xophmeister

... Просто для підтвердження: я можу отримати доступ до даних у "прихованих" файлах із командного рядка, використовуючи cat(інший ядро ​​GNU). Знову ж таки, нативні засоби Windows (наприклад, type) навіть не можуть знайти файл.
Xophmeister

Відповіді:


63

Дозвольте здогадатися: програма, яка створила файл, а також утиліти GNU, не працюють як адміністратор.

По-перше, якась історія. За часів Windows XP, багато програм передбачали, що вони завжди будуть працювати як адміністратор, і писатимуть у місця, на кшталт C:\Windowsі C:\Program Files (x86)з дикою відмовою. За допомогою Vista Microsoft намагалася зробити менше адміністраторів, але звичайні користувачі не можуть писати в ці місця. Вони потребували тих сумнівних програм, щоб продовжувати працювати (інакше люди не оновлюватимуться). Отже, вони ввели магічну особливість під назвою віртуалізація UAC .

Програми, що працюють як звичайні користувачі, можуть подумати, що їх запис у важливі місця вдалося успішно, але насправді Windows перевела дані в місцеположення кожного користувача. Коли ці програми шукають файли в каталозі, Windows перевіряє, чи є файли у віртуальному магазині цього місця, і якщо так, додає їх до списку каталогів. (Є еквівалент функціональності для Реєстру.)

Схоже, ваша поштова програма намагалася записати в місце під Program Files (x86)час звичайного користувача. Запис було переспрямовано, тож воно насправді не пішло до цього місця. Програма все ще може його бачити, адже Windows підтримує ілюзію щодо цього. Провідник цього не бачить, оскільки повідомляє операційній системі, що він добре себе почуває, і тому не потребує перенаправлення. Команда командного рядка dirне є програмою (це лише особливість cmd.exe), тому вона також вважається "знаю", тому файли сумісності не відображаються.lsце програма, яка, очевидно, не знає, тому вона має бачити файли сумісності.

Ви знайдете свій файл тут:

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

Поки тикаєшся в VirtualStore , ви можете бути здивовані тим, що програми не дуже добре поводяться та потребують мережі безпеки для віртуалізації.

Якщо ви хочете зупинити переадресацію, запустіть програму як адміністратор або збережіть резервні копії у місці, до якого ви можете фактично записатись без прав адміністратора.


16
І тут я подумав, що знаю Windows. Або це добре зроблений квітневий жарт, або я сьогодні дізнався щось важливе. дякую, @Ben N!
серпня 1616 року

3
@Aganju Кілька місяців тому мені довелося допомогти користувачеві Windows створити ключ для WinSCP. І вони стали непомітними приблизно так само, як описано в питанні. На той момент я висунув гіпотезу з поясненням, майже таким же, як і у цій відповіді. Я не намагався перевірити свою гіпотезу, оскільки проблему було вирішено, поставивши файл під домашній каталог користувачів. Але принаймні я можу підтвердити, що ця відповідь не для мене виглядає як жарт.
kasperd

3
Ну я буду проклятий! Там вони всі є. Це дивна поведінка, навіть якщо вона призначена. Я думав, що у мене помилка файлової системи! ... Це також пояснило б, чому в моєму першому резервному копії поштової скриньки з'являється: Програма була вперше запущена з інсталятора ("Ви хочете запустити таке-і-таке зараз?"), Яке підняв би це на наявність привілеїв адміністратора; тоді як "прихований" пробіг був місцевим користувачем.
Xophmeister

1
@Aganju Я здогадуюсь, що ви ніколи не використовували Vista багато. Він мав можливість показувати вам віртуалізовані файли в Провіднику; тому що питання було досить поширеним протягом кількох років. На той час, коли Win7 з'явився, найпоширеніше програмне забезпечення перестало припускати, що воно може писати у підпапки свого каталогу встановлення; а в останніх версіях Windows функція стала значно менш помітною або, можливо, прямо видаленою.
Ден Нелі

4
@Xophmeister Це компроміс. Як зазначається у відповіді, написання програмного забезпечення у власний каталог додатків було надзвичайно поширеним перед Vista. Це масивна дірка для безпеки, тому її довелося вирішити. Альтернативи: 1) запобігання запису та злому всіх програм, 2) використання віртуалізації для збереження файлів у безпечному місці. 1), очевидно, нездатний і дуже проти SOP Майкрософт, і врешті-решт це призведе лише до того, що всі працюють під адміністратором, як і раніше. Це може заплутати, але це, мабуть, найкращий варіант. Не пишіть у небезпечні каталоги.
Луань
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.