|
|
Line 1: |
Line 1: |
| '''Author's note: If you find errors (especially if you are native English speaker), you are allowed to correct them anytime. Also, I don't claim to be a Vista/7 expert, therefore if there are wrong statements or conclusions, by all means, correct them. It will help to improve this document. Use the Edit links at the right.'''
| | I'm not easily impressed. . . but that's ipmerssing me! :) |
| | |
| =User Account Control, filesystem virtualization and its impact on Filezilla=
| |
| | |
| ==General explanation==
| |
| Microsoft introduced the User Account Control (UAC) in Windows Vista, which is also present in Windows 7.
| |
| Among other components it also contains a feature called filesystem virtualization. Essentially it remaps reads/writes for certain files to other paths. The most important protected path we have to deal with is '''Program Files'''.
| |
| | |
| Let's assume the protected path is ''C:\Program Files''.
| |
| | |
| Older versions of FileZilla and other programs not explicitly Vista-aware lack a so called '''manifest'''. A manifest basically tells Windows how aware the program is about the recent Windows versions. And it tells Windows about the privileges the application requires.
| |
| | |
| A program without manifest is run in the context of a standard user (NOT the currently logged on user). Filesystem virtualization is applied to such a program.
| |
| | |
| If the program is installed in ''C:\Program Files\Program'', and tries to write a file into its directory, the file will not go into that directory, but into another, in this case ''C:\Users\<username>\AppData\Local\VirtualStore\Program Files\Program''.
| |
| | |
| This is totally transparent to the older program and the user.
| |
| | |
| The problem starts if you want to access this file with a Vista-aware program, such as FileZilla. As FileZilla includes a manifest, it doesn't use the VirtualStore, but the real paths. It will of course not be able to find your file there.
| |
| | |
| ==Example==
| |
| You have a HTML editor which is from pre-Vista era, called WebEd.
| |
| | |
| WebEd is installed in ''C:\Program Files\WebEd'' and saves the pages into ''C:\Program Files\WebEd\publish''.
| |
| | |
| Your Windows user account is named '''foo''' and you're using the English language version.
| |
| | |
| The recent Filezilla version is installed for FTP transfers.
| |
| | |
| | |
| You fire up WebEd and create your page, consisting of an index.html and a few images. You're satisfied with your work and save it.
| |
| Now you want to transfer it to the server. Launching Filezilla, navigating to the 'publish' directory, you find it empty. What has just happened?
| |
| | |
| | |
| In the moment WebEd tried to save the file to ''C:\Program Files\WebEd\publish'', the request was caught and redirected by the UAC.
| |
| | |
| Your files have instead been saved to ''C:\Users\foo\AppData\Local\VirtualStore\Program Files\WebEd\publish''.
| |
| | |
| | |
| You can of course transfer the files from this directory.
| |
| | |
| ==What problems could arise?==
| |
| Filesystem virtualization is applied to pre-Vista programs without a proper manifest that are started in non-administrator mode. Following is a list of possible problems that could arise now or later:
| |
| | |
| ===The older application is updated and the new version includes a manifest===
| |
| In this case (as with Filezilla) the program suddenly won't use filesystem virtualization anymore. This will leave the user totally confused about where his files have gone.
| |
| | |
| ===UAC is disabled===
| |
| Power users do this to restore the old XP behavior. All pre-Vista programs are affected! They could 'lose' saved files, configuration files and data stored directly into previously protected parts (and thus redirected to the VirtualStore).
| |
| | |
| | |
| I feel so much happier now I unedrstnad all this. Thanks!
| |
| | |
| ==What can I do to solve this?==
| |
| 1. Use the latest, Vista/7-aware versions of your applications wherever possible.
| |
| | |
| 2. Don't save your data into protected directories. Redirect your app to save into an unprotected path.
| |
| Example: Create a directory ''C:\publish'' and save your webpage there.
| |
| | |
| 3. Disable UAC. This is not recommended as it effectively turns off the advanced security mechanisms implemented in Vista/7.
| |
| | |
| 4. Don't use Vista. ;)
| |
| | |
| Generally, look into the ''C:\Users\<yourusername>\AppData\Local\VirtualStore'' directory. You will find all redirected data there.
| |