Dans une installation standard de Windows, le répertoire ‘Program Files’ se trouve à %SystemDrive%\Program Files (ou son équivalent localisé), et les ‘Common Program Files’ (ou leur équivalent localisé) sont un sous-répertoire sous ‘Program Files’. Dans Windows Vista et les versions ultérieures, les chemins d’accès aux répertoires ‘Program Files’ et ‘Common Program Files’ ne sont pas localisés sur le disque. Les noms localisés sont des points de jonction NTFS vers les emplacements non localisés. En outre, le shell Windows localise le nom du dossier Program Files en fonction de la langue d’affichage de l’interface utilisateur du système.

Les ‘Program Files’ et les ‘Common Program Files’ peuvent être déplacés. Au démarrage du système, les chemins réels de ‘Program Files’ et ‘Common Program Files’ sont chargés à partir du registre Windows, où ils sont stockés dans les valeurs ProgramFilesDir et CommonFilesDir sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Ils sont ensuite rendus accessibles au reste du système via les variables d’environnement volatiles %ProgramFiles%, et %CommonProgramFiles%. Les applications peuvent également obtenir les emplacements de ces chemins en interrogeant le Setup API à l’aide de dirids, ou par le biais de Windows Management Instrumentation, ou en interrogeant le shell à l’aide de CSIDLs, ou ShellSpecialFolderConstants. Ce sont toutes des méthodes indépendantes de la localisation.

Les versions x86-64 et IA-64 de Windows ont deux dossiers pour les fichiers d’application : Le dossier Program Files sert de cible d’installation par défaut pour les programmes 64 bits, tandis que le dossier Program Files (x86) est la cible d’installation par défaut pour les programmes 32 bits qui ont besoin de la couche d’émulation WoW64. Alors que les versions 64 bits de Windows ont également une variable d’environnement %ProgramFiles(x86)%, les dirids et les CSIDL ne sont pas différents entre les environnements 32 bits et 64 bits ; les API renvoient simplement des résultats différents, selon que le processus appelant est émulé ou non.

Pour être rétrocompatible avec les limitations 8.3 des anciennes limitations des noms de fichiers de la Table d’allocation des fichiers, les noms ‘Program Files’, ‘Program Files (x86)’ et ‘Common Program Files’ sont raccourcis par le système à progra~N et common~N, où N est un chiffre, un numéro de séquence qui, sur une installation propre, sera 1 (ou 1 et 2 lorsque ‘Program Files’ et ‘Program Files (x86)’ sont présents).

Si Windows est installé sur un volume NTFS, par défaut, le dossier ‘Program Files’ ne peut être modifié que par les membres des groupes d’utilisateurs ‘Administrateurs’. Cela peut constituer un problème pour les programmes créés pour Windows 9x. Ces systèmes d’exploitation n’avaient pas de système de fichiers sécurisé, et les programmes pouvaient donc également stocker leurs données dans ‘Program Files’. Les programmes qui stockent leurs données dans « Program Files » ne fonctionneront généralement pas correctement sur les systèmes Windows NT avec des privilèges d’utilisateur normaux, à moins que la sécurité ne soit réduite pour les sous-répertoires concernés. Windows Vista a résolu ce problème en introduisant la virtualisation des fichiers et du registre. Lorsque cette virtualisation est activée pour un processus, Windows enregistre les modifications apportées au dossier ‘Program Files’ dans %LocalAppData%\VirtualStore\Program Files (x86).

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.