Bei einer Standard-Windows-Installation befindet sich das Verzeichnis „Programme“ unter %SystemDrive%\Program Files
(oder dem lokalisierten Äquivalent davon), und die „Gemeinsamen Programme“ (oder dem lokalisierten Äquivalent davon) sind ein Unterverzeichnis unter „Programme“. Unter Windows Vista und höher werden die Pfade zu den Verzeichnissen „Programme“ und „Allgemeine Programmdateien“ nicht auf der Festplatte lokalisiert. Stattdessen sind die lokalisierten Namen NTFS-Verzweigungspunkte zu den nicht lokalisierten Orten. Außerdem lokalisiert die Windows-Shell den Namen des Ordners „Programme“ abhängig von der Anzeigesprache der Benutzeroberfläche des Systems.
Sowohl „Programme“ als auch „Allgemeine Programme“ können verschoben werden. Beim Systemstart werden die tatsächlichen Pfade zu „Program Files“ und „Common Program Files“ aus der Windows-Registrierung geladen, wo sie in den Werten ProgramFilesDir
und CommonFilesDir
unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
gespeichert sind. Sie werden dann über die flüchtigen Umgebungsvariablen %ProgramFiles%
und %CommonProgramFiles%
für das übrige System zugänglich gemacht. Anwendungen können die Positionen dieser Pfade auch durch die Abfrage von Setup API
mit dirids
oder durch die Windows-Verwaltungsinstrumentierung oder durch die Abfrage der Shell mit CSIDLs oder ShellSpecialFolderConstants
erhalten. Dies sind alles lokalisierungsunabhängige Methoden.
x86-64 und IA-64 Versionen von Windows haben zwei Ordner für Anwendungsdateien: Der Ordner „Program Files“ dient als Standard-Installationsziel für 64-Bit-Programme, während der Ordner „Program Files (x86)“ das Standard-Installationsziel für 32-Bit-Programme ist, die die WoW64-Emulationsschicht benötigen. Während 64-Bit-Windows-Versionen auch eine %ProgramFiles(x86)%
-Umgebungsvariable haben, unterscheiden sich die dirids und CSIDLs nicht zwischen 32-Bit- und 64-Bit-Umgebungen; die APIs geben lediglich unterschiedliche Ergebnisse zurück, je nachdem, ob der aufrufende Prozess emuliert ist oder nicht.
Um abwärtskompatibel mit den 8.3-Beschränkungen der alten Dateizuordnungstabelle zu sein, werden die Namen „Programmdateien“, „Programmdateien (x86)“ und „Gemeinsame Programmdateien“ vom System auf progra~N
und common~N
verkürzt, wobei N eine Ziffer ist, eine Sequenznummer, die bei einer Neuinstallation 1 ist (oder 1 und 2, wenn sowohl „Programmdateien“ als auch „Programmdateien (x86)“ vorhanden sind).
Wenn Windows auf einem NTFS-Volume installiert ist, kann der Ordner „Programme“ standardmäßig nur von Mitgliedern der Benutzergruppe „Administratoren“ geändert werden. Dies kann für Programme, die für Windows 9x erstellt wurden, ein Problem darstellen. Diese Betriebssysteme hatten keine Dateisystemsicherheit, und Programme konnten daher ihre Daten auch in „Programme“ speichern. Programme, die ihre Daten in „Programme“ speichern, laufen in der Regel auf Windows NT-Systemen mit normalen Benutzerrechten nicht korrekt, es sei denn, die Sicherheit für die betroffenen Unterverzeichnisse wird herabgesetzt. Windows Vista hat dieses Problem durch die Einführung der Datei- und Registrierungsvirtualisierung behoben. Wenn diese Virtualisierung für einen Prozess aktiviert ist, speichert Windows Änderungen am Ordner „Programme“ in %LocalAppData%\VirtualStore\Program Files (x86)
.