2008-10-23 7 views
46

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

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

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

ответ

36

Чтобы добавить @David Arno's helpful answer, основанный на W7:


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

fsutil behavior set /? 

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

Поведение разрешения символико-ссылка устанавливается на машине, доступ данная ссылка, а не машина, которая принимает его.

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

  • L стенды для "Local" и R для "Remote" (кто бы мог санк)
  • ПЕРВЫЙ L или R - перед тем2 - относится к местоположению самой линии связи (как ОРР osed к своей цели) относительно машины ДОСТУП К ссылке.
  • ВТОРОЙ L или R - после2 - относится к расположению по ссылке в целевых по отношению к машине, где сама ссылка расположена.

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

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

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

55

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

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

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

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

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

+1

Эта страница содержит дополнительную информацию fsutil: http://technet.microsoft.com/en-us/library/cc785435(WS.10).aspx – ErJab 2011-07-15 16:15:57

5

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

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

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

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

+2

«Тип ссылки по умолчанию должен быть выведен автоматически из целевого типа пути! " Согласен! – Fowl 2009-03-01 10:39:37

1

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

2

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

ключ реестра: 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: Selectively allow the evaluation of a symbolic link

+0

Ницца найти. У вас есть ссылка на любую документацию MS по этому поводу? Было бы целесообразно добавить ИМО, если вы это сделаете. – 2014-05-20 12:16:15

9

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

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

fsutil behavior query SymlinkEvaluation 

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

enter image description here

+1

Это было очень полезно. Спасибо – 2014-09-17 21:44:10

+0

в объекте групповой политики вы можете изменить его в «Конфигурация компьютера»> «Административные шаблоны»> «Система»> «Файловая система» и настроить «выборочно разрешить оценку символической ссылки» – deru 2017-05-11 06:45:47

2

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

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

6

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

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