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

2071
Xophmeister

Я использую IMAPSize для резервного копирования моих почтовых ящиков. Процесс просто сбрасывает содержимое вашего почтового ящика в .emlфайлы на вашем диске. В любом случае, первый почтовый ящик, для которого я создал резервную копию, отображается так, как я ожидал. Тем не менее, следующий не отображается в Проводнике и, если я введу его в адресную строку, он скажет мне, что он не существует.

Однако IMAPSize настаивает на том, что файлы там. (Много диска письменности выполняются во время операции) . Кроме того, каталог действительно появится в диалоговом окне каталога Windows, и - как я установлен GNU инструментов - это показывает в ls(но не в родном dir). Я не могу cdвойти в каталог, но ls, кажется, могу получить к нему доступ (и, действительно, каталоги и файлы, которые я ожидаю, по-видимому, там).

окно командной строки, показывающее списки

Также обратите внимание, что временная метка и размер файла backup.dbразличаются в dirи ls -l.

Короче говоря: что здесь происходит и как мне это исправить !?

26
Единственное заметное отличие, которое я вижу, состоит в том, что `ls -l` показывает специфическое количество жестких ссылок на« скрытые »каталоги и файлы ... Я не знаю, почему это так, и как жесткая ссылка даже интерпретируется в NTFS- земельные участки. Xophmeister 8 лет назад 1
... Просто для подтверждения: я могу получить доступ к данным в «скрытых» файлах из командной строки, используя `cat` (еще одно ядро ​​GNU). Опять же, однако, нативные инструменты Windows (например, `type`) не могут даже найти файл. Xophmeister 8 лет назад 0

1 ответ на вопрос

63
Ben N

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

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

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

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

Вы найдете свой файл здесь:

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

Разглядывая VirtualStore, вы можете быть удивлены тем, какие программы плохо себя ведут и нуждаются в сети безопасности виртуализации.

Если вы хотите остановить перенаправление, запустите программу от имени администратора или сохраните ваши резервные копии в месте, в которое вы можете писать без прав администратора.

И тут я подумал, что знаю Windows. Либо это хорошо сделанная шутка от апреля, либо я узнал кое-что значимое сегодня. спасибо, @Ben N! Aganju 8 лет назад 16
@Aganju Несколько месяцев назад я должен был помочь пользователю Windows создать пару ключей для WinSCP. И они стали невидимыми почти так же, как описано в вопросе. В то время я выдвинул гипотезу объяснения, почти такого же, как приведенное в этом ответе. Я не удосужился проверить свою гипотезу, потому что проблема была решена путем помещения файла в домашний каталог пользователей. Но, по крайней мере, я могу подтвердить, что этот ответ совсем не выглядит для меня шуткой. kasperd 8 лет назад 3
Ну, я буду проклят! Там все они есть. Это странное поведение, даже если оно задумано. Я думал, что у меня ошибка в файловой системе! ... Это также объясняет, почему моя первая резервная копия почтового ящика появляется: сначала программа запускалась из установщика («Вы хотите запустить такой-то и такой-то сейчас?»), Который повысил бы его до наличия прав администратора; тогда как «скрытый» прогон был как у локального пользователя. Xophmeister 8 лет назад 3
@Aganju Полагаю, ты никогда не пользовался Vista. У него была возможность показывать вам виртуализированные файлы в Проводнике; потому что проблема была достаточно распространенной в течение нескольких лет. Ко времени появления Win7 наиболее широко используемое программное обеспечение перестало предполагать, что оно может записывать в подпапки своего установочного каталога; и эта функция была сделана значительно менее заметной или, возможно, полностью удалена в самых последних версиях Windows. Dan Neely 8 лет назад 1
@ Xophmeister Это компромисс. Как отмечается в ответе, запись программного обеспечения в собственный каталог приложений до Vista была довольно распространенной. Это огромная дыра в безопасности, поэтому ее нужно было решить. Альтернативы были: 1) предотвратить запись и сломать все приложения, 2) использовать виртуализацию для сохранения файлов в безопасном месте. 1) очевидно несостоятельно и очень против SOP Microsoft, и в конце концов это приведет только к тому, что все будут запускать все под администратором, как раньше. Это может сбивать с толку, но это все еще, вероятно, лучший вариант. Не пишите в опасные каталоги. Luaan 8 лет назад 4
Аналогичное перенаправление на автономные файлы, dir / s - ваш друг. mckenzm 8 лет назад 1
На панели инструментов должна быть кнопка «Файлы совместимости». Смотрите также: http://superuser.com/a/401979/117590 ([скриншот] (http://i.stack.imgur.com/wbQCB.jpg)) Bob 8 лет назад 0
@Bob Да, в Vista есть, но, похоже, исчез позже. (Это никогда не появляется для меня в Windows 8.) Ben N 8 лет назад 0
@BenN Я вижу это в Win7, хотя, возможно, только в тех папках, которые фактически перенаправлены. IIRC это было удалено в Win8 (хотя не слишком уверен). В любом случае, ОП здесь явно использует Win7, так что это как минимум полезная информация здесь. Bob 8 лет назад 0