58

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

无法跟踪符号链接,因为它的类型已禁用。

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

4

8 回答 8

69

好吧,我找到了答案,尽管将其描述为记录不全是轻描淡写的!

首先,这篇 TechEd 文章强调了用户可以“启用或禁用符号链接中可用的四种评估中的任何一种”这一事实。这四个“评估”包括远程到本地和本地到远程。它没有提供有关如何执行此操作的任何线索。

然而,进一步的搜索发现了这个 fsutil 帮助页面,它确实记录了如何“启用或禁用符号链接中可用的四种评估中的任何一种”。因此,要解决我遇到的问题,我需要在 Vista 框中发出以下命令:

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

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

于 2008-10-23T14:53:15.380 回答
50

要添加到@David Arno 的有用答案,基于 W7:


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

fsutil behavior set /?

报告当前配置,请运行fsutil behavior query SymlinkEvaluation- 请参阅@Jake1164 的回答,特别是关于组策略如何控制行为。

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

- 即、、和-的行为代码含义如下:fsutil behavior set SymlinkEvaluationL2LL2RR2LR2R

  • L代表“本地”和R“远程”
  • FIRSTLR-在 -之前2指链接本身(与其目标相对)相对于正在访问链接的机器的位置。
  • SECONDLR-后面2- 指的是链接目标相对于 LINK 本身所在机器的位置

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

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

与 David 在 Vista 上所经历的不同,我在 W7 上能够通过单独启用 R2R(并且不必启用 R2L)来解析指向另一台远程计算机上的资源的远程链接。

于 2010-03-31T20:29:05.023 回答
13

当我的一个旧程序停止工作时,我最近在我所有的公司 Windows 7 机器上发现了这个问题。经过一番搜索并找到这些设置后,我尝试通过命令行和注册表进行设置,但没有任何缓解。

我发现您可以在提升的提示符下使用该命令:

fsutil behavior query SymlinkEvaluation

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

在此处输入图像描述

于 2014-06-23T11:19:19.977 回答
8

这些设置也可以直接通过注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem进行操作:请参阅 SymlinkLocalToLocalEvaluation、SymlinkLocalToRemoteEvaluation、SymlinkRemoteToLocalEvaluation、SymlinkRemoteToRemoteEvaluation。

如果使用“fsutil 行为查询 SymlinkEvaluation”,您会收到消息 ..“当前由组策略控制”...,请检查HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Filesystems\NTFS 或简单地在注册表中搜索“Symlink”

于 2015-04-23T07:16:21.783 回答
5

感谢 David 的提示,我迫切地想要解决这个问题,这使得符号链接几乎毫无用处。

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

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

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

于 2008-12-17T18:28:37.203 回答
3

这些设置也可以通过注册表直接操作(需要本地管理员编写):

注册表项: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

官方文档很难找到,但这似乎是微软官方页面:Selectively allow the evaluation of a symbolic link

于 2014-05-19T20:24:46.520 回答
2

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

因此,作为一种解决方法,如果您需要将其设置为 GP 规定的内容以外的内容,您甚至可以在登录时运行脚本以在应用 GP 后对其进行设置。

于 2014-07-15T22:34:21.323 回答
1

远程连接点默认工作。对于文件,您仍然需要符号链接。

于 2009-10-08T04:19:14.977 回答