如何克服“无法遵循符号链接,因为其类型已禁用”。获取符号链接的目标时出错?

时间:2008-10-23 13:08:42

标签: windows-server-2008 symlink

previous question开始,我正在使用UNC路径从Vista计算机上创建Server 2008上的符号链接。我可以创建链接就好了。我可以转到Server 2008框并双击资源管理器中的链接以打开目标文件。但我不能做的是使用FileCreateW来获取UNC路径链接的句柄(来自Vista框)。当我尝试它时,它失败并且GetLastError()返回错误代码1463(0x5B7),这是:

  

无法遵循符号链接,因为其类型已禁用。

如何在Server 2008中启用其“类型”(假设错误意味着它的内容)?

8 个答案:

答案 0 :(得分:58)

嗯,我找到了答案,虽然将其描述为严重记录是轻描淡写的!

首先,this TechEd article强调用户可以“启用或禁用符号链接中可用的四种评估中的任何一种”。这四个“评估”包括远程本地和本地到远程。它没有提供任何关于如何做到这一点的线索。

然而,进一步的搜索显示this fsutil help page,它确实记录了如何“启用或禁用符号链接中可用的四种评估中的任何一种”。所以为了解决我遇到的问题,我需要在Vista框上发出以下命令

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

以允许完全访问符号链接指向本地和远程计算机的位置。

答案 1 :(得分:40)

根据W7添加到@David Arno's helpful answer


fsutil.exe可以通过简单地运行来显示它所需的参数:

fsutil behavior set /?

报告当前配置,请运行fsutil behavior query SymlinkEvaluation - 请参阅@Jake1164's answer,特别是有关组策略的方式可能正在控制行为。

符号链接解析行为是在访问给定链接的计算机上设置的,而不是托管它的计算机。

fsutil behavior set SymlinkEvaluation行为代码 - 即L2LL2RR2LR2R - 表示以下内容:

  • L代表“本地”,R代表“远程”(谁会砰的?)
  • 第一个LR - 之前 2 - 指的是链接本身的位置(与其目标相对)相对于机器访问链接
  • L之后的第二个R2 - - 指的是链接的目标相对于LINK机器的位置本身位于

因此,例如,执行fsutil behavior set SymlinkEvaluation R2L意味着您可以访问链接:

  • 位于远程计算机(R
  • 指向同一台远程计算机上的目标(L

与David在Vista上遇到的不同,我在W7上能够通过单独启用R2R(而不是还必须启用R2L)来解析指向另一台远程计算机上的资源的远程链接。

答案 2 :(得分:10)

当我的一个遗留程序停止工作时,我最近在我的所有公司Windows 7盒子上找到了这个。经过一些搜索并找到这些设置后,我尝试通过命令行设置并通过注册表进行设置,没有任何解脱。

我发现您可以从提升的提示中使用该命令:

fsutil behavior query SymlinkEvaluation

这将返回这些链接的状态,在我的情况下,它们是由组策略控制的!谢谢IT部门(你f @ $#%$ rs)!

enter image description here

答案 3 :(得分:7)

也可以通过 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem 中的注册表直接操作这些设置: 见SymlinkLocalToLocalEvaluation,SymlinkLocalToRemoteEvaluation,SymlinkRemoteToLocalEvaluation,SymlinkRemoteToRemoteEvaluation。

如果使用" fsutil行为查询SymlinkEvaluation"你的短信.." 目前通过组策略&#34控制,...,检查 HKEY_LOCAL_MACHINE \ SOFTWARE \政策\微软\的Windows \文件系统\ NTFS 或者只是通过注册表搜索" Symlink"

答案 4 :(得分:5)

感谢大卫的提示,我迫切希望解决这个使符号链接无效的问题。

应该注意Vista的默认配置是启用L2L和L2R,但R2R和R2L已禁用。

我首先尝试仅启用R2R,但这还不够。 R2L也必须启用。

我的列表中的下一个问题:如何摆脱目录链接的mklink命令的愚蠢/ D开关。应从目标路径名类型自动推断出默认链接类型!

答案 5 :(得分: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

答案 6 :(得分:2)

仅供参考,如果您有控制SymlinkEvaluation设置的组策略,您仍然可以从命令行自行设置它们。它们将在下次重启/登录时被GP覆盖,但您的设置将在用户会话期间生效。

因此,如果您需要将其设置为GP指示以外的其他内容,您甚至可以在登录时运行脚本以在应用GP后设置它们。

答案 7 :(得分:1)

默认情况下,远程联结点可用。对于文件,您仍然需要符号链接。