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

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

  •  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后设置它们。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top