FileZilla и Windows Vista/Windows 7 UAC

Содержание

User Account Control (контроль учетных записей пользователей), виртуализация файловой системы и ее влияние на Filezilla

Общее

Microsoft ввела UAC начиная с Windows Vista, эта возможность также доступна в Windows 7.

Вместе с другими компонентами UAC предлагает виртуализацию файловой системы. Проще говоря, виртуализация перенаправляет чтение/запись определенных файлов на другой путь. Самый важный защищенный путь с которым мы работаем - Program Files.

Предположим, что защищенный путь - C:\Program Files.

В старых версиях FileZilla и других программах, которые не приспособлены явно для работы с Vista, отсутствует так называемый манифест. Манифест указывает Windows насколько приспособлена программа для работы с последними версиями Windows и список требуемых привилегий.

Программа без манифеста работает в контексте стандартного пользователя (а НЕ пользователя, который сейчас работает с программой). К такой программе применяется виртуализация файловой системы.

Если программа установлена в C:\Program Files\Program и пытается совершить запись в эту директорию, файл будет записан в другую директорию, в этом случае в C:\Users\\AppData\Local\VirtualStore\Program Files\Program.

Этот процесс полностью прозрачен для старых программ и пользователя.

Проблемы начинаются при открытии файлов из этой директории программой приспособленной для работы с Vista, например FileZilla. Т.к. FileZilla включает в себе манифест, виртуальное хранилище не используется, и запись идет по реальному пути, из-за чего файлы не будут найдены в нужной директории.

Пример

Вы используете HTML-редактор не приспособленный для работы с Vista под названием WebEd.

WebEd установлен в директории C:\Program Files\WebEd и сохраняет страницы в директории C:\Program Files\WebEd\publish.

Имя вашей пользовательской записи - foo, и вы пользуетесь английской версией.

Для передачи файлов по FTP установлена последняя версия FileZilla.

После запуска WebEd и создания вашей страницы, состоящей из index.html и нескольких изображений, вы удовлетворены результатом и сохраняете страницу.

После этого вы пытаетесь передать ее на сервер. Вы запускаете Filezilla, перейдя в директорию 'publish', но оказывается, что эта директория пуста. Что именно произошло?

После того, как WebEd пытался записать файл в директории C:\Program Files\WebEd\publish, этот запрос был перехвачен UAC.

Ваши файлы были сохранены в директории C:\Users\foo\AppData\Local\VirtualStore\Program Files\WebEd\publish.

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

Какие проблемы могут возникнуть?

Виртуализация файловой системы применяется для программ, не приспособленных для работы с Vista и не поставляющих соответствующий манифест, но при этом не запущенных в административном режиме. Ниже перечислены проблемы, которые могут при этом возникнуть:

Старые приложения обновляются и при этом новые версии содержат манифест

В этом случае (как и с Filezilla) приложение внезапно перестанет использовать виртуализацию файловой системы. Это введет в заблуждение пользователя, т.к. он не будет уведомлен о том, где на самом деле расположены его файлы.

Отключение UAC

Продвинутые пользователи включают эту возможность для восстановления поведения, к которому они привыкли во время использования Windows XP. При этом пострадают все неприспособленные к Vista программы! Они могут "потерять" сохраненные файлы, конфигурационные файлы и данные, сохраненные в директориях, которые были до этого защищены.

Приложение запущено от имени администратора

К приложениям, не приспособленным к работе под Vista, но при этом запущенным от имени администратора не будет применяться виртуализация, после чего они "потеряют" сохраненные файлы, конфигурационные файлы и данные, сохраненные в директориях, которые были до этого защищены.

Как можно решить эти проблемы?

1. Старайтесь использовать последние версии программ.

2. Не сохраняйте данные в защищенных директориях.

  К примеру, создайте директорию C:\publish и сохраняйте ваши данные именно там.  

3. Отключите UAC. Этот способ не рекомендуется, т.к. при отключении UAC также отключаются соответствующие механизмы защиты, предусмотренные в Vista/7.

4. Не пользуйтесь Vista. ;)

В большинстве случаев достаточно просмотреть содержимое директории C:\Users\\AppData\Local\VirtualStore. Все перенаправленные данные будут расположены там.