In een standaard Windows-installatie staat de directory ‘Program Files’ op %SystemDrive%\Program Files
(of het gelokaliseerde equivalent daarvan), en de ‘Common Program Files’ (of het gelokaliseerde equivalent daarvan) is een subdirectory onder ‘Program Files’. In Windows Vista en later worden de paden naar de mappen “Program Files” en “Common Program Files” niet gelokaliseerd op schijf. In plaats daarvan zijn de gelokaliseerde namen NTFS-knooppunten naar de niet-gelokaliseerde locaties. Bovendien lokaliseert de Windows-shell de naam van de map Program Files, afhankelijk van de schermtaal van de gebruikersinterface van het systeem.
Zowel ‘Program Files’ als ‘Common Program Files’ kunnen worden verplaatst. Bij het opstarten van het systeem worden de eigenlijke paden naar “Program Files” en “Common Program Files” geladen vanuit het Windows-register, waar ze worden opgeslagen in de ProgramFilesDir
en CommonFilesDir
waarden onder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
. Ze worden vervolgens toegankelijk gemaakt voor de rest van het systeem via de vluchtige omgevingsvariabelen %ProgramFiles%
, en %CommonProgramFiles%
. Applicaties kunnen ook de locaties van deze paden verkrijgen door Setup API
te bevragen met dirids
, of door Windows Management Instrumentation, of door de shell te bevragen met CSIDLs, of ShellSpecialFolderConstants
. Dit zijn allemaal lokalisatie-onafhankelijke methoden.
x86-64 en IA-64 versies van Windows hebben twee mappen voor toepassingsbestanden: De map Program Files dient als het standaard installatiedoel voor 64-bits programma’s, terwijl de map Program Files (x86) het standaard installatiedoel is voor 32-bits programma’s die WoW64-emulatielaag nodig hebben. Hoewel 64-bits Windows-versies ook een %ProgramFiles(x86)%
-omgevingsvariabele hebben, zijn de dirids en CSIDL’s niet verschillend tussen 32-bits en 64-bits omgevingen; de API’s geven alleen verschillende resultaten terug, afhankelijk van of het aanroepende proces is geëmuleerd of niet.
Om achterwaarts compatibel te zijn met de 8.3 beperkingen van de oude Bestandstoewijzingstabel bestandsnamen, worden de namen ‘Program Files’, ‘Program Files (x86)’ en ‘Common Program Files’ door het systeem ingekort tot progra~N
en common~N
, waarbij N een cijfer is, een volgnummer dat op een schone installatie 1 zal zijn (of 1 en 2 wanneer zowel ‘Program Files’ als ‘Program Files (x86)’ aanwezig zijn).
Als Windows is geïnstalleerd op een NTFS-volume, kan de map ‘Program Files’ standaard alleen worden gewijzigd door leden van de gebruikersgroep ‘Administrators’. Dit kan een probleem zijn voor programma’s die zijn gemaakt voor Windows 9x. Die besturingssystemen hadden geen beveiliging voor het bestandssysteem, en programma’s konden hun gegevens dus ook in ‘Program Files’ opslaan. Programma’s die hun gegevens opslaan in ‘Programmabestanden’ zullen meestal niet correct draaien op Windows NT-systemen met normale gebruikersbevoegdheden, tenzij de beveiliging voor de betrokken submappen wordt verlaagd. Windows Vista heeft dit probleem opgelost door Bestands- en Registervirtualisatie te introduceren. Wanneer deze virtualisatie is ingeschakeld voor een proces, slaat Windows wijzigingen in de map “Programmabestanden” op in %LocalAppData%\VirtualStore\Program Files (x86)
.