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

StackOverflow https://stackoverflow.com/questions/229643

  •  04-07-2019
  •  | 
  •  

Вопрос

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

По символической ссылке невозможно перейти, поскольку ее тип отключен.

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

Это было полезно?

Решение

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


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

fsutil behavior set /?

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

А поведение разрешения символических ссылок устанавливается на машине, на которой доступы данная ссылка, а не машина, на которой он размещен.

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

  • L означает «Местный», и R для «Remote» (кто бы мог подумать?)
  • Первый L или R - до тот 2 - относится к местоположению самой ссылки (в отличие от ее цели) относительно машины, ДОСТУПНОЙ по ссылке.
  • Второй L или R - после тот 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)!

введите описание изображения здесь

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top