我如何克服“无法遵循符号链接,因为它的类型是禁用的。”获取符号链接的目标时错误?
-
04-07-2019 - |
题
继从 上一个问题, ,我正在使用 UNC 路径从 Vista 计算机在 Server 2008 上创建符号链接。我可以很好地创建链接。我可以转到 Server 2008 框并双击资源管理器中的链接来打开目标文件。但我不能做的是使用 FileCreateW 获取 UNC 路径链接的句柄(来自 Vista 框)。当我尝试时,它失败并且 GetLastError() 返回错误代码 1463 (0x5B7),即:
无法跟踪符号链接,因为其类型已禁用。
如何在 Server 2008 中启用其“类型”(假设错误的含义如其所言)?
解决方案
要添加到 @David Arno 的有用答案, ,基于W7:
fsutil.exe
可以通过简单地运行来显示它需要什么参数:
fsutil behavior set /?
到 报告 当前的 配置, , 跑步 fsutil behavior query SymlinkEvaluation
- 看 @Jake1164的回答, ,特别是关于如何 组策略 可能会控制行为。
这 符号链接解析行为是在计算机上设置的 访问 给定的链接, ,而不是托管它的机器。
这 行为准则 为了 fsutil behavior set SymlinkEvaluation
- 即 L2L
, L2R
, R2L
, , 和 R2R
- 含义如下:
L
代表“本地”,并且R
对于“远程”(谁会想到?)- 首先
L
或者R
- 前 这2
- 指链接本身的位置(而不是其目标) 相对于机器访问链接. - 第二
L
或者R
- 后 这2
- 指链接的位置 相对于 LINK 本身所在机器的目标.
因此,例如,执行 fsutil behavior set SymlinkEvaluation R2L
意味着您可以访问链接:
- 位于远程计算机上(
R
) - 指向同一台远程计算机上的目标(
L
)
与 David 在 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
这将返回这些链接的状态,在我的情况下,它们是由组策略控制的!谢谢IT部门(你f @ $#%$ rs)!
也可以通过 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem 中的注册表直接操作这些设置: 请参阅SymlinkLocalToLocalEvaluation,SymlinkLocalToRemoteEvaluation,SymlinkRemoteToLocalEvaluation,SymlinkRemoteToRemoteEvaluation。
如果使用“fsutil behavior query SymlinkEvaluation”您收到消息..“目前由组策略控制”...,请检查 HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ Filesystems \ NTFS 强> 或者只是搜索throug注册表中的“符号链接”
感谢大卫的提示,我迫切希望解决这个使符号链接无效的问题。
应该注意Vista的默认配置是启用L2L和L2R,但R2R和R2L已禁用。
我首先尝试仅启用R2R,但这还不够。 R2L也必须启用。
我的列表中的下一个问题:如何摆脱目录链接的mklink命令的愚蠢/ D开关。应从目标路径名类型自动推断出默认链接类型!
这些设置也可以通过注册表直接操作(需要本地管理员写入):
注册表项: 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后设置它们。
默认情况下,远程联结点可用。对于文件,您仍然需要符号链接。