web-dev-qa-db-fra.com

Comment surmonter le «Le lien symbolique ne peut pas être suivi car son type est désactivé». erreur lors de l'obtention de la cible d'un lien symbolique?

À la suite d'un 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 très bien créer le lien. Je peux aller dans la case Server 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 vers le lien de chemin UNC (à partir de la boîte Vista). Lorsque je l'essaye, il échoue et GetLastError () renvoie 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)?

51
David Arno

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


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

fsutil behavior set /?

Pour signaler la configuration actuelle, exécutez fsutil behavior query SymlinkEvaluation - voir @ réponse de Jake1164 , en particulier en ce qui concerne la façon dont une stratégie de groupe peut contrôler le comportement.

Le comportement de résolution du lien symbolique est défini sur la machine qui accède une liaison donnée , pas la machine qui l'héberge .

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

  • L signifie "Local" et R pour "Remote" (qui aurait pensé?)
  • Le PREMIER L ou R - avant le 2 - fait référence à l'emplacement du lien lui-même (par opposition à sa cible) par rapport à la machine ACCÉDANT au lien.
  • Le SECOND L ou R - après le 2 - fait référence à l'emplacement de la liaison de la liaison par rapport à la machine sur laquelle se trouve le LIEN.

Ainsi, par exemple, l'exécution de fsutil behavior set SymlinkEvaluation R2L signifie que vous pouvez accéder aux liens:

  • situé 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, sur W7, j'ai pu résoudre un lien distant qui pointait vers une ressource sur une autre machine distante en activant R2R seul (et sans avoir à activer également R2L).

41
mklement0

Eh bien, j'ai trouvé la réponse, bien que la décrire comme mal documentée soit un euphémisme!

Tout d'abord, cet article TechEd met en évidence 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 distant au local et le local au distant. Cela ne donne aucune indication sur la façon de procéder.

Cependant, une nouvelle recherche a révélé cette page d'aide de fsutil , qui documente réellement 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 émettre la commande suivante sur la box Vista:

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

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

60
David Arno

J'ai récemment trouvé cela sur toutes mes boîtes Windows 7 d'entreprise lorsqu'un de mes programmes hérités a cessé de fonctionner. Après avoir cherché et trouvé ces paramètres, j'ai essayé de les définir via la ligne de commande et via le registre sans relief.

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

fsutil behavior query SymlinkEvaluation

Cela retournera le statut de ces liens ET dans mon cas, ils sont contrôlés par une stratégie de groupe! Merci au service informatique (vous f @ $ #% $ rs)!

enter image description here

11
Jake1164

Ces paramètres peuvent également être manipulé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 un message .. "est actuellement contrôlé par la stratégie de groupe" ..., vérifiez HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Filesystems\NTFS ou recherchez simplement dans le registre "Symlink"

7
Bulki S Maslom

Merci David pour l'astuce, je devenais désespéré de résoudre ce problème qui rendait les liens symboliques pour la plupart 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 uniquement R2R, mais ce n'est pas suffisant. R2L doit également être activé.

La question suivante sur ma liste: comment se débarrasser de ce stupide commutateur/D pour la commande mklink pour les liens de répertoire. Le type de lien par défaut doit être déduit automatiquement du type de chemin cible!

5

Pour info si vous avez des stratégies de groupe en place contrôlant les paramètres de SymlinkEvaluation, vous pouvez toujours les définir vous-même à partir de la ligne de commande. Ils seront remplacés par GP au prochain redémarrage/connexion, mais vos paramètres fonctionneront pendant votre session utilisateur.

Donc, comme solution de contournement, si vous avez besoin de le définir sur autre chose que ce que GP impose, vous pouvez même exécuter un script à la connexion pour les définir après l'application de GP.

2
Ryan

Ces paramètres peuvent également être manipulés directement via le registre (nécessite un administrateur local pour écrire):

Clé d'enregistrement: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Valeurs de registre (paires nom/données):

Name                             Type       Data  (1: Enabled; 0: Disabled)
-------------------------------------------------
SymlinkLocalToLocalEvaluation    REG_DWORD     1
SymlinkLocalToRemoteEvaluation   REG_DWORD     1
SymlinkRemoteToLocalEvaluation   REG_DWORD     1
SymlinkRemoteToRemoteEvaluation  REG_DWORD     1

La documentation officielle est difficile à trouver, mais cela semble être une page Microsoft officielle: Autoriser sélectivement l'évaluation d'un lien symbolique

2
mwolfe02

Les points de jonction distants fonctionnent par défaut. Pour les fichiers, vous avez toujours besoin de liens symboliques.

1
Ian Kelling