Как мне преодолеть «Символьную ссылку нельзя перейти, потому что ее тип отключен». ошибка при получении цели символической ссылки? - PullRequest
49 голосов
/ 23 октября 2008

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

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

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

Ответы [ 8 ]

58 голосов
/ 23 октября 2008

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

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

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

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

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

40 голосов
/ 01 апреля 2010

Чтобы добавить к @ полезный ответ Дэвида Арно , на основе W7:


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

fsutil behavior set /?

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

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

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

  • L означает «Локальный», а R означает «Удаленный» (кто бы мог подумать?)
  • FIRST L или R - до * 2 - относится к местоположению самой ссылки (в отличие от ее цели) относительно машины, ДОСТУПАЮЩЕЙ к ссылке .
  • ВТОРАЯ L или R - после * 2 - относится к расположению цели ссылки относительно машины, на которой находится сама ССЫЛКА .

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

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

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

10 голосов
/ 23 июня 2014

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

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

fsutil behavior query SymlinkEvaluation

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

enter image description here

7 голосов
/ 23 апреля 2015

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

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

5 голосов
/ 17 декабря 2008

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

Следует отметить, что по умолчанию для Vista настроены L2L и L2R, но R2R и R2L отключены.

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

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

2 голосов
/ 16 июля 2014

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

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

2 голосов
/ 20 мая 2014

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

Ключ реестра: 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: Выборочно разрешить оценку символической ссылки

1 голос
/ 08 октября 2009

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

...