Uno degli errori più comuni nello sviluppo di software per Windows è quello di memorizzare file a run-time (ad esempio le opzioni selezionate dall'utente) nella cartella di installazione del programma, ovvero C:\Programmi (o C:\Program Files). Finché si è amministratori della macchina non ci sono problemi, ma se il software viene eseguito da un utente che ha privilegi limitati, la scrittura di file nella cartella dei programmi non è consentita, quindi l'applicazione non funziona correttamente.
Tra le tante soluzioni di Windows Vista per la sicurezza (alcune sono riassunte in questo articolo), ce n'è una chiamata File Virtualization, che ha proprio lo scopo di eliminare il problema appena citato:
File virtualization addresses the situation where an application relies on the ability to store a file (like a configuration file) in a system-wide location. This works well when the user is a member of the administrators group, but fails when the same program is launched from a limited user account (or an account protected by UAC). When the application writes to a system location (like \Program Files\...), Windows redirects it to a user-specific path under the \Virtual Store\... directory. Later, when the application reads back this file, the system will provide the one in the Virtual Store. As far as the application is concerned, it was able to successfully read and write directly to Program Files.
Example:
Suppose User A is running under a limited user account and uses Notepad to save a text file to \Program Files\foo.txt. Virtualization would allow this file to be saved successfully. What occurs is the write is redirected to \Virtual Store\(The User's account security identifier (-SID)\Program Files\foo.txt. Looking in the \Program Files\ directory with Windows Explorer, User A will see the file foo.txt, since Windows Explorer properly shows the user's virtualized files. However, after logging in, User B will NOT see the file foo.txt in the \Program Files\ directory. If User B then writes the \Program files\foo.txt file, that write will also virtualize to User B's virtual store. The files User A writes remain independent of the file User B writes.
Una tecnia analoga esiste anche per la virtualizzazione delle chiavi del Registro di configurazione (Registry Virtualization).
Questa soluzione dovrebbe risolvere i problemi di compatibilità di molte applicazioni con la UAC, tuttavia è bene ricordare che Microsoft rimuoverà la virtualizzazione dalle prossime versioni di Windows: in questo modo, vuole spingere gli sviluppatori a realizzare al più presto applicazioni UAC-Compliant.