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

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

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

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

Ответ 1

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


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

fsutil behavior set /?

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

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

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

  • L означает "Local" и R для "Remote" (кто бы взломал?)
  • FIRST L или R - перед 2 - относится к местоположению самой ссылки (в отличие от ее цели) относительно машины. ДОСТУП К этой ссылке.
  • SECOND L или R - после 2 - относится к местоположению целевого объекта ссылки относительно машины, на которой расположен сам LINK.

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

fsutil behavior query SymlinkEvaluation

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

enter image description here

Ответ 4

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

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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