57 votes

Comment puis-je surmonter l'erreur "Le lien symbolique ne peut pas être suivi car son type est désactivé." lorsque je récupère la cible d'un lien symbolique?

Suite à une question précédente, je crée un lien symbolique sur un serveur 2008 à partir d'une machine Vista en utilisant des chemins UNC. Je peux créer le lien sans problème. Je peux aller sur le serveur 2008 et double-cliquer sur le lien dans l'explorateur pour ouvrir le fichier cible. Ce que je ne peux pas faire, cependant, c'est utiliser FileCreateW pour obtenir une poignée sur le lien UNC (de la machine Vista). Lorsque j'essaie, cela échoue et GetLastError() retourne le code d'erreur 1463 (0x5B7), qui est :

Le lien symbolique ne peut pas être suivi car son type est désactivé.

Comment activer son "type" dans Server 2008 (en supposant que l'erreur signifie ce qu'elle dit) ?

0 votes

Cela a été utile et je rajoute seulement que le client, tout comme le serveur hébergeant le lien symbolique, doit avoir R2R:1 configuré et activé

68voto

David Arno Points 15499

J'ai trouvé la réponse, même si la qualifier de mal documentée est un euphémisme!

Tout d'abord, cet article TechEd souligne le fait que les utilisateurs peuvent "activer ou désactiver l'une des quatre évaluations disponibles dans les liens symboliques". Ces quatre "évaluations" comprennent le lien de distant à local et le lien de local à distant. Il ne donne aucune indication sur la manière de le faire.

Cependant, une nouvelle recherche a révélé cette page d'aide fsutil, qui documente effectivement comment "activer ou désactiver l'une des quatre évaluations disponibles dans les liens symboliques". Donc, pour résoudre le problème que je rencontrais, je dois exécuter la commande suivante sur la boîte Vista:

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

pour permettre un accès complet à l'endroit où les liens symboliques pointent sur les machines locales et distantes.

1 votes

Cette page contient des informations supplémentaires sur fsutil : technet.microsoft.com/en-us/library/cc785435(WS.10).aspx

48voto

mklement0 Points 12597

Pour ajouter à @la réponse utile de David Arno, basée sur W7 :


fsutil.exe peut être utilisé pour montrer quels arguments il prend en simplement exécutant :

fsutil behavior set /?

Pour rapporter la configuration actuelle, exécutez fsutil behavior query SymlinkEvaluation - voir @la réponse de Jake1164, notamment en ce qui concerne comment une stratégie de groupe peut contrôler le comportement.

Le comportement de résolution de lien symbolique est réglé sur la machine qui accède à un lien donné, pas sur la machine qui l'héberge.

Les codes de comportement pour fsutil behavior set SymlinkEvaluation - à savoir L2L, L2R, R2L et R2R - signifient ce qui suit :

  • L signifie "Local", et R "Remote"
  • Le PREMIER L ou R - avant le 2 - se réfère à l'emplacement du lien lui-même (par opposition à sa cible) par rapport à la machine ACCÉDANT au lien.
  • Le DEUXIÈME L ou R - après le 2 - se réfère à l'emplacement de la cible du lien par rapport à la machine où le LIEN lui-même est situé.

Ainsi, par exemple, exécuter fsutil behavior set SymlinkEvaluation R2L signifie que vous pouvez accéder à des liens :

  • situés sur une machine distante (R)
  • qui pointent vers des cibles sur cette même machine distante (L)

Contrairement à ce que David a vécu sur Vista, j, sur W7, j'ai pu résoudre un lien distant qui pointait vers une ressource sur une autre machine distante en activant uniquement R2R (et sans avoir besoin d'activer également R2L).

0 votes

Y a-t-il une raison connue, pourquoi tous les types d'évaluation ne sont pas activés par défaut?

0 votes

Malheureusement, je ne sais pas, @stackprotector - on dirait que c'est d'une manière ou d'une autre lié à la sécurité.

12voto

Jake1164 Points 2310

Récemment, j'ai trouvé ceci sur toutes mes machines Windows 7 d'entreprise lorsque l'un de mes programmes hérités a cessé de fonctionner. Après avoir effectué quelques recherches et trouvé ces paramètres, j'ai essayé de les définir en ligne de commande et via le registre, sans succès.

J'ai découvert que vous pouvez utiliser la commande à partir d'une invite élevée :

fsutil behavior query SymlinkEvaluation

Cela renverra le statut de ces liens ET, dans mon cas, qu'ils sont contrôlés par une stratégie de groupe ! Merci département informatique (bande de @#$%£) !

Saisir la description de l'image ici

1 votes

Cela a été très utile. Merci.

1 votes

Dans le GPO, vous pouvez le modifier dans "Configuration de l'ordinateur > Modèles d'administration > Système > Système de fichiers" et configurer "Autoriser sélectivement l'évaluation d'un lien symbolique"

8voto

Bulki S Maslom Points 31

Ces paramètres peuvent également être modifiés directement via le registre à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem : Voir SymlinkLocalToLocalEvaluation, SymlinkLocalToRemoteEvaluation, SymlinkRemoteToLocalEvaluation, SymlinkRemoteToRemoteEvaluation.

si avec "fsutil behavior query SymlinkEvaluation" vous obtenez le message .."est actuellement contrôlé par la stratégie de groupe"..., vérifiez HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Filesystems\NTFS ou simplement recherchez dans le registre pour "Symlink"

0 votes

Changer HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Files‌systèmes\NTFS a fonctionné pour moi

5voto

Merci David pour le conseil, j'étais devenu désespéré de résoudre ce problème qui rendait les liens symboliques presque inutiles.

Il convient de noter que la configuration par défaut pour Vista est L2L et L2R activés, mais R2R et R2L désactivés.

J'ai d'abord essayé d'activer seulement R2R, mais ce n'est pas suffisant. R2L doit également être activé.

La prochaine question sur ma liste : Comment se débarrasser de cet stupide interrupteur /D pour la commande mklink pour les liens de répertoire. Le type de lien par défaut devrait être déduit automatiquement du type de chemin d'accès cible!

2 votes

"Le type de lien par défaut doit être déduit automatiquement du type de chemin cible!" D'accord!

0 votes

Depuis qu'un lien peut être vers un autre lien lui-même, cela nécessiterait une évaluation récursive jusqu'à l'objet racine, au moment de la création, ce qui rendrait un lien symbolique non portable entre les machines ou même potentiellement non portable sur la même machine, si un autre lien était créé. C'est en quelque sorte le but d'un lien symbolique - il est censé être une référence universelle qui est évaluée au moment de l'exécution. Il est impossible d'inférer de quel type de cible vous avez besoin, à moins que ce ne soit un chemin UNC, auquel cas, pour NTFS, il DOIT être un lien symbolique. Tous les autres cas sont ambigus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X