In un’installazione standard di Windows, la directory ‘Program Files’ sarà a %SystemDrive%\Program Files
(o l’equivalente localizzato), e i ‘Common Program Files’ (o l’equivalente localizzato) saranno una sottodirectory sotto ‘Program Files’. In Windows Vista e successivi, i percorsi delle directory ‘Program Files’ e ‘Common Program Files’ non sono localizzati su disco. Invece, i nomi localizzati sono punti di giunzione NTFS per le posizioni non localizzate. Inoltre, la shell di Windows localizza il nome della cartella “Program Files” a seconda della lingua di visualizzazione dell’interfaccia utente del sistema.
Sia “Program Files” che “Common Program Files” possono essere spostati. All’avvio del sistema, i percorsi effettivi di ‘Program Files’ e ‘Common Program Files’ sono caricati dal registro di Windows, dove sono memorizzati nei valori ProgramFilesDir
e CommonFilesDir
sotto HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
. Sono poi resi accessibili al resto del sistema tramite le variabili d’ambiente volatili %ProgramFiles%
e %CommonProgramFiles%
. Le applicazioni possono anche ottenere le posizioni di questi percorsi interrogando il Setup API
usando dirids
, o attraverso Windows Management Instrumentation, o interrogando la shell usando CSIDLs, o ShellSpecialFolderConstants
. Questi sono tutti metodi indipendenti dalla localizzazione.
Le versioni IA-64 e x86-64 di Windows hanno due cartelle per i file delle applicazioni: La cartella Program Files serve come destinazione di installazione predefinita per i programmi a 64 bit, mentre la cartella Program Files (x86) è la destinazione di installazione predefinita per i programmi a 32 bit che hanno bisogno del livello di emulazione WoW64. Mentre le versioni di Windows a 64 bit hanno anche una variabile d’ambiente %ProgramFiles(x86)%
, i dirid e i CSIDL non sono diversi tra gli ambienti a 32 bit e a 64 bit; le API semplicemente restituiscono risultati diversi, a seconda che il processo chiamante sia emulato o meno.
Per essere compatibile all’indietro con le limitazioni 8.3 dei vecchi nomi di file della File Allocation Table, i nomi ‘Program Files’, ‘Program Files (x86)’ e ‘Common Program Files’ sono accorciati dal sistema a progra~N
e common~N
, dove N è una cifra, un numero di sequenza che in un’installazione pulita sarà 1 (o 1 e 2 quando sono presenti sia ‘Program Files’ che ‘Program Files (x86)’).
Se Windows è installato su un volume NTFS, per impostazione predefinita, la cartella ‘Program Files’ può essere modificata solo dai membri dei gruppi di utenti ‘Administrators’. Questo può essere un problema per i programmi creati per Windows 9x. Quei sistemi operativi non avevano sicurezza del file system, e i programmi potevano quindi memorizzare i loro dati in ‘Program Files’. I programmi che memorizzano i loro dati in ‘Program Files’ di solito non funzionano correttamente su sistemi Windows NT con privilegi utente normali, a meno che la sicurezza non venga abbassata per le sottodirectory interessate. Windows Vista ha affrontato questo problema introducendo la virtualizzazione di file e registro. Quando questa virtualizzazione è abilitata per un processo, Windows salva le modifiche alla cartella ‘Program Files’ in %LocalAppData%\VirtualStore\Program Files (x86)
.
.