En una instalación estándar de Windows, el directorio ‘Archivos de programa’ estará en %SystemDrive%\Program Files
(o su equivalente localizado), y los ‘Archivos de programa comunes’ (o su equivalente localizado) serán un subdirectorio bajo ‘Archivos de programa’. En Windows Vista y posteriores, las rutas de los directorios «Archivos de programa» y «Archivos de programa comunes» no están localizadas en el disco. En su lugar, los nombres localizados son puntos de unión NTFS a las ubicaciones no localizadas. Además, el intérprete de comandos de Windows localiza el nombre de la carpeta Archivos de programa en función del idioma de visualización de la interfaz de usuario del sistema.
Tanto ‘Archivos de programa’ como ‘Archivos de programa comunes’ pueden moverse. Al iniciar el sistema, las rutas reales de ‘Archivos de programa’ y ‘Archivos de programa comunes’ se cargan desde el registro de Windows, donde se almacenan en los valores ProgramFilesDir
y CommonFilesDir
bajo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
. A continuación, se hacen accesibles al resto del sistema a través de las variables de entorno volátiles %ProgramFiles%
, y %CommonProgramFiles%
. Las aplicaciones también pueden obtener las ubicaciones de estas rutas consultando el Setup API
usando dirids
, o a través de Windows Management Instrumentation, o consultando el shell usando CSIDLs, o ShellSpecialFolderConstants
. Todos estos son métodos independientes de la localización.
Las versiones x86-64 e IA-64 de Windows tienen dos carpetas para los archivos de aplicación: La carpeta Archivos de programa sirve como destino de instalación por defecto para los programas de 64 bits, mientras que la carpeta Archivos de programa (x86) es el destino de instalación por defecto para los programas de 32 bits que necesitan la capa de emulación WoW64. Mientras que las versiones de Windows de 64 bits también tienen una variable de entorno %ProgramFiles(x86)%
, los dirids y CSIDLs no son diferentes entre los entornos de 32 y 64 bits; las APIs simplemente devuelven resultados diferentes, dependiendo de si el proceso de llamada está emulado o no.
Para ser compatible con las limitaciones de 8.3 de la antigua Tabla de Asignación de Archivos, los nombres ‘Archivos de Programa’, ‘Archivos de Programa (x86)’ y ‘Archivos de Programa Comunes’ son acortados por el sistema a progra~N
y common~N
, donde N es un dígito, un número de secuencia que en una instalación limpia será 1 (o 1 y 2 cuando ambos ‘Archivos de Programa’ y ‘Archivos de Programa (x86)’ están presentes).
Si Windows está instalado en un volumen NTFS, por defecto, la carpeta ‘Archivos de programa’ sólo puede ser modificada por los miembros del grupo de usuarios ‘Administradores’. Esto puede ser un problema para los programas creados para Windows 9x. Esos sistemas operativos no tenían seguridad en el sistema de archivos y, por lo tanto, los programas también podían almacenar sus datos en «Archivos de programa». Los programas que almacenan sus datos en «Archivos de programa» no suelen ejecutarse correctamente en sistemas Windows NT con privilegios de usuario normales, a menos que se reduzca la seguridad de los subdirectorios afectados. Windows Vista abordó este problema introduciendo la virtualización de archivos y del registro. Cuando se activa esta virtualización para un proceso, Windows guarda los cambios en la carpeta ‘Archivos de programa’ en %LocalAppData%\VirtualStore\Program Files (x86)
.