27 octobre 2010
publié par 
Avec la "redirection" des dossiers de Windows Vista, Seven ou 2008, il faut être vigilant lors de l'accès aux dossiers d'un disque. En effet lorsqu'un fichier est bien visible par l'Explorateur de Windows, cela ne veut pas forcément dire qu'il est accessible depuis les applications...

Bien heureusement, cela ne concerne pas les dossiers traditionnels des applications, mais uniquement les répertoires systèmes. De plus, il faut une application compilée en 32 bits, et exécutée sous une version 64 bits de Windows.

Un exemple pour illustrer cette particularité de Windows à bien maîtriser pour négocier l'arrivée massive de stations de travail 64 bits. L'outil de capture de Windows Seven correspond à l'exécutable suivant :

C:\Windows\System32\SnippingTool.exe

Ce fichier est bien visible dans le dossier C:\Windows\System32\, à partir de l'Explorateur. Cependant, toute tentative d'utilisation de ce fichier depuis une application 32 bits sera impossible :
- fListefichier("C:\Windows\System32\Snip*.*") ne trouvera pas le fichier,
- fFichierExiste("C:\Windows\System32\SnippingTool.exe") retournera faux,
- LanceAppli("C:\Windows\System32\SnippingTool.exe") indiquera que le fichier est introuvable...

En effet pour une application 32 bits, tous les accès vers le dossier C:\Windows\System32\ sont redirigés vers le dossier C:\Windows\SysWOW64\. Et dans ce dossier, il n'y pas de fichier "SnippingTool.exe" ce qui explique les résultats ci-dessus.

Pour un accès au "vrai" dossier \System32\, il suffit de créer une version 64 bits de l'application. Grâce aux configurations de projet, et au support natif de la compilation 32 bits et 64 bits, cette tâche est simplifiée à l'extrême. Une fois les configurations de projet en place, le menu "Atelier ... Génération multiple" permet en une seule opération de créer la version 32 bits, et la version 64 bits d'une même application.

Il faut également noter que des redirection similaires sont possibles en fonction des droits de l'utilisateur (cf. UAC), pour les fichiers mais également pour la base de registres.

< Retour