Créer des liens symboliques sous Windows 7 64 bits

Si vous rencontrez une erreur de type ORA-12154 avec le client Oracle 10g sous Windows 7 64 bits alors que le TNSPING fonctionne, c'est peut-être parce que l'application appelante se trouve dans le répertoire "c:\Program Files (x86)".

J'ai rencontré ce problème avec quelques applications .NET, mais également avec l'outil FreeToad. La solution consiste à réinstaller l'application qui cause problème dans un autre répertoire, ne contenant pas de parenthèses.

Si pour une raison ou une autre, vous ne souhaitez pas déplacer votre application, sachez qu'il existe dans NTFS une fonction bien cachée de liens symboliques.Pour l'activer, il vous faudra télécharger l'outil Junction.exe de Sysinternals (http://technet.microsoft.com/fr-fr/sysinternals/bb896768.aspx).

Junction.exe

Windows 2000 et les versions ultérieures prennent en charge les liaisons symboliques de répertoires, où un répertoire sert de liaison symbolique vers un autre répertoire sur l'ordinateur. Par exemple, si le répertoire D:\SYMLINK spécifie C:\WINNT\SYSTEM32 comme sa cible, une application accédant à D:\SYMLINK\DRIVERS accède en réalité à C:\WINNT\SYSTEM32\DRIVERS. Les liaisons symboliques de répertoires sont connues sous le nom de jonctions NTFS dans Windows. Malheureusement, Windows ne dispose pas d'outils permettant de créer des jonctions. Vous devez acheter le kit de ressources Win2K fourni avec le programme linkd pour créer des jonctions. Marc Russinovich a donc décidé d'écrire son propre outil de création de jonctions : Junction. Junction vous permet non seulement de créer des jonctions NTFS, mais également de vérifier si les fichiers ou répertoires sont effectivement des points d'analyse. Les points d'analyse constituent le mécanisme sur lequel sont basées les jonctions NTFS et sont utilisés par le Service RSS (Remote Storage Service) de Windows, ainsi que les points de montage de volume.

Notez le répertoire de type JUNCTION dans la liste

Notez que Windows ne prend pas en charge les jonctions de répertoires sur les partages à distance.

Si vous souhaitez afficher les informations d'analyse, l'utilisation pour Junction est la suivante :

Utilisation : junction [-s]

-s

Lit les sous-répertoires de façon récursive.

Si vous souhaitez créer ou supprimer une jonction, utilisez Junction comme suit :

Utilisation : junction [-d] []

Pour supprimer une jonction, spécifiez le commutateur -d et le nom de la jonction.

Cette fonctionnalité peut également vous sauver la vie si vous avez des chemins hardcodés en base de données (pas bien !!!) et que vous venez à manquer d'espace disque ;-)

Commentaires

Nicolas a dit…
Les "junctions" sont gérées depuis Windows 2000 (via l'utilitaire mklink du Windows Resource Kit) mais posaient pas mal de problèmes à l'époque (avec les logiciels de sauvegarde par exemple)...

Sinon depuis Vista il y a des vrais liens symboliques (via mklink, qui a l'air de gérer les "junctions" aussi), mais jamais testé.
Nicolas a dit…
Correction: le premier utilitaire qui gérait les junctions était "linkd".
Exact, c'est linkd qui en plus était payant.