La directory "C:\ProgramData" che come mamma Microsoft dice http://msdn2.microsoft.com/en-us/library/aa367992(VS.85).aspx è la cartella deputata per: "containing application data for all users" (fonte Microsoft) è soggetta a trattamenti particolari:
Iniziamo a "giocare", utilizzando sempre le dovute prcauzioni, con il contenuto di questa directory. Accedo ad esempio alla directory "C:\ProgramData\Adobe\Updater5" al suo interno c'è un file xml (non è importante il file in se ma quello che succede), apro quest'ultimo con notepad ed inserisco la parola "test" all'inizio del file:
salvo le modifiche ma non riesco perchè il file è stato creato dall'utente amministratore. Ora utilizzo un'altro programma di editing "Notepad2" per modificare lo stesso file, inserisco la parola "test" salvo le modifiche, questa volta tutto va a buon fine, nessun messaggio di avvertimento. Apro contemporaneamente il file sia con notepad che con notepad2:
Se non consideriamo il colore e l'indentazione del testo notiamo che si tratta in effetti di due file differenti anche se abbiamo aperto lo stesso file! E' successo qualche cosa ma cosa?
la risposta:
http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-b70e-b18ff918c2811033.mspx?mfr=true
“Virtualization
Because the enterprise environment has long been a place where system administrators have been attempting to lock down systems, many line-of-business (LOB) applications are designed to not require a full administrator access token. As a result, IT administrators will not need to replace the majority of pre-Windows Vista applications when running Windows Vista with UAC enabled.
Windows Vista includes file and registry virtualization technology for applications that are not UAC compliant and that have historically required an administrator's access token to run correctly. Virtualization ensures that even applications that are not UAC compliant will be compatible with Windows Vista. When a non-UAC-compliant administrative application attempts to write to a protected directory, such as Program Files, UAC gives the application its own virtualized view of the resource it is attempting to change, using a copy-on-write strategy. The virtualized copy is maintained under the user's profile. As a result, a separate copy of the virtualized file is created for each user that runs the non-compliant application.” (fonte Microsoft)
Questo spiega tutto le applicazioni non UAC compliant come notepad2 vedono una "vista virtuale" della directory UAC protetta ProgramData, di conseguenza lavorano in tutto e per tutto con una copia dei file e delle directory che vengono modificati\e. Le applicazioni UAC compliant come notepad quando viene modificato e salvato un file di una directory UAC protetta impediscono il salvataggio se il programma non gira come amministratore.
Ultima considerazione, i file duplicati dalla virtualizzazione vengono inseriti all'interno della directory "C:\User\CurrentUser\AppData\Local\VirtualStore\ProgrammData\Path al file modificato" :
Se soppesiamo tutte le implicazioni che questo meccanismo comporta,..., lascio voi le conclusioni.