Как преодолеть " символическую ссылку нельзя следовать, потому что ее тип отключен."ошибка при получении цели символической ссылки?

с предыдущий вопрос, Я создаю символическую ссылку на сервере 2008 с машины Vista, используя UNC-пути. Я могу создать ссылку просто отлично. Я могу перейти к окну Server 2008 и дважды щелкнуть ссылку в проводнике, чтобы открыть целевой файл. Однако я не могу использовать FileCreateW для получения дескриптора ссылки UNC path (из окна Vista). Когда я пытаюсь это сделать, он терпит неудачу и GetLastError () возвращает код ошибки 1463 (0x5B7), который:

символическая ссылка не может быть выполнена, поскольку ее тип отключен.

Как включить его " тип " в Server 2008 (предполагая, что ошибка означает то, что она говорит)?

8 ответов


добавить @ David Arno полезный ответ, на основе W7:


fsutil.exe можно сделать, чтобы показать, какие аргументы она принимает, просто работает:

fsutil behavior set /?

до отчет настоящее конфигурация, используя fsutil behavior query SymlinkEvaluation - см. @Jake1164 это, особенно в отношении того, как групповая политика может контролировать поведение.

на разрешение символьной ссылки поведение устанавливается на машине, которая обращается к данной ссылке, а не машина, которая его размещает.

на кодексы поведения на fsutil behavior set SymlinkEvaluation - именно L2L, L2R, R2L и R2R - означает следующее:

  • L означает "местный", и R для "удаленного" (кто бы thunk?)
  • первый L или R - до the 2 - относится к местоположению ссылки сам (в отличие от своей цели)относительно машины, обращающейся к ссылке.
  • второй L или R - после the 2 - относится к местоположению ссылки цель относительно машины, где находится сама ссылка.

таким образом, например, выполняется fsutil behavior set SymlinkEvaluation R2L означает, что вы можете получить доступ к ссылкам:

  • расположен на удаленной машине (R)
  • это указывает на цели на той же удаленной машине (L)

в отличие от того, что Дэвид испытал на Vista, я, на W7, смог разрешить удаленную ссылку, которая указывала на ресурс на другой удаленной машине, включив только R2R (и не включив R2L).


Ну, я нашел ответ, хотя описать его как плохо документированный-это преуменьшение!

прежде всего,эта статья TechEd подчеркивает тот факт, что пользователи могут "включить или отключить любую из четырех оценок, доступных в символических ссылках". Эти четыре" оценки " включают в себя удаленную локальную и локальную удаленную. Это не дает никакого понятия о том, как это сделать.

однако дальнейший поиск показал эта страница справки fsutil, который фактически документирует, как"включить или отключить любую из четырех оценок, доступных в символических ссылках". Поэтому, чтобы исправить проблему, которую я имел, мне нужно выполнить следующую команду на коробке Vista:

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

чтобы разрешить полный доступ к тому, где символические ссылки указывают как на локальных, так и на удаленных машинах.


недавно я нашел это во всех моих корпоративных окнах Windows 7, когда одна из моих устаревших программ перестала работать. После некоторого поиска и поиска этих настроек я попытался установить через командную строку и через реестр без облегчения.

Я обнаружил, что вы можете использовать команду с повышенными привилегиями:

fsutil behavior query SymlinkEvaluation

это вернет статус этих ссылок и в моем случае, что они контролируются групповой политикой! Спасибо ИТ-отделу (вам f@$#%$rs)!

enter image description here


этими настройками также можно управлять непосредственно через реестр по адресу раздел HKEY_LOCAL_MACHINE\система\CurrentControlSet на\контроль\файловая система: См. SymlinkLocalToLocalEvaluation, SymlinkLocalToRemoteEvaluation, SymlinkRemoteToLocalEvaluation, SymlinkRemoteToRemoteEvaluation.

Если с "fsutil поведение запроса SymlinkEvaluation" вы получите сообщение .."в настоящее время контролируется групповой политикой"..., проверять HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Filesystems\NTFS или просто найдите в реестре"Symlink"


спасибо Дэвиду за подсказку, я был в отчаянии, чтобы исправить эту проблему, которая сделала символические ссылки в основном бесполезными.

следует отметить, что конфигурация по умолчанию для Vista l2l и l2r включена, но R2R и r2l отключены.

сначала я попытался включить только R2R, но этого недостаточно. R2L также должен быть включен.

следующий вопрос в моем списке: как избавиться от этого глупого переключателя /D для команды mklink для ссылок на каталог. Ссылка по умолчанию тип должен быть выведен автоматически из целевого типа pathname!


этими настройками также можно управлять непосредственно через реестр (требуется локальный администратор для записи):

ключ реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

значения реестра (пары имя/данные):

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

официальная документация трудно найти, но это, кажется, официальная страница Microsoft:выборочно разрешить оценку символической ссылки


FYI если у вас есть групповые политики, контролирующие параметры SymlinkEvaluation, вы все равно можете установить их самостоятельно из командной строки. Они будут перезаписаны GP при следующей перезагрузке / входе в систему, но ваши настройки будут работать во время сеанса пользователя.

Так как обходной путь, если вам нужно установить его на что-то другое, чем то, что диктует GP, вы можете даже запустить сценарий при входе в систему, чтобы установить их после применения GP.


удаленные точки соединения работают по умолчанию. Для файлов вам все еще нужны символические ссылки.