获取符号链接的目标时,如何克服“由于其types被禁用而无法遵循的符号链接”错误?
继上一个问题之后 ,我使用UNCpath从Vista机器上创buildServer 2008上的符号链接。 我可以创build链接就好了。 我可以去到Server 2008中,然后双击资源pipe理器中的链接打开目标文件。 我不能做的是使用FileCreateW来获取UNCpath链接的句柄(从Vista框)。 当我尝试它,它失败,GetLastError()返回错误代码1463(0x5B7),这是:
符号链接不能被遵循,因为它的types是禁用的。
如何在Server 2008中启用它的“types”(假设错误意味着什么)?
要添加到@David Arno的有用答案 ,基于W7:
fsutil.exe
可以通过简单的运行来显示它所需要的参数:
fsutil behavior set /?
要报告当前configuration ,请运行fsutil behavior query SymlinkEvaluation
– 请参阅@ Jake1164的答案 ,特别是关于组策略如何控制行为。
符号链接parsing行为在访问给定链接的机器上设置 ,而不是托pipe它的机器。
fsutil behavior set SymlinkEvaluation
(即L2L
, L2R
, R2L
和R2R
的行为代码表示如下:
-
L
代表“本地”,R
代表“远程”(谁会变成?) - 第一个
L
或R
– 在2
之前 – 是指链路本身(相对于它的目标) 相对于机器访问链路的位置 。 - SECOND
L
或R
– 在2
– 是指链路目标相对于LINK本身所在的机器的位置 。
因此,例如,执行fsutil behavior set SymlinkEvaluation R2L
意味着您可以访问链接:
- 位于远程机器(
R
) - 指向同一个远程机器上的目标(
L
)
与David在Vista上经历的不同,我在W7上能够通过单独启用R2R(而不必启用R2L)来parsing指向另一个远程机器上的资源的远程链接。
那么我find了答案,尽pipe把它形容为严重记载的是轻描淡写!
首先, 这篇TechEd文章强调了用户可以“启用或禁用符号链接中可用的四种评估”的事实。 这四个“评估”包括远程到本地和从本地到远程。 它没有给出任何线索如何做到这一点。
然而,进一步的search显示了这个fsutil帮助页面 ,它实际上logging了如何“启用或禁用符号链接中可用的四个评估”中的任何一个。 所以要解决我遇到的问题,我需要在Vista中发出以下命令:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
以允许完全访问符号链接在本地和远程机器上指向的位置。
我最近在所有公司的Windows 7盒子上find了这个,当我的一个旧程序停止工作。 经过一些search和find这些设置,我试图通过命令行设置,并通过registry,没有救济。
我发现你可以使用提升的命令:
fsutil behavior query SymlinkEvaluation
这将返回这些链接的状态,在我的情况下,他们正在由组策略控制! 感谢IT部门(你f @ $#%$ rs)!
感谢大卫的提示,我正在拼命解决这个问题,这使得符号链接几乎无用。
应该注意的是,Vista的默认configuration是启用了L2L和L2R,但禁用了R2R和R2L。
我第一次尝试只启用R2R,但这是不够的。 R2L也必须启用。
在我的列表中的下一个问题:如何摆脱mklink命令的目录链接愚蠢的/ D开关。 应该从目标path名types自动推断默认链接types!
这些设置也可以通过HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystemregistry直接操作:请参阅SymlinkLocalToLocalEvaluation,SymlinkLocalToRemoteEvaluation,SymlinkRemoteToLocalEvaluation,SymlinkRemoteToRemoteEvaluation。
如果使用“fsutil行为查询SymlinkEvaluation”,您将得到消息..“ 当前由组策略控制 ”,检查HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ Filesystems \ NTFS或者简单地search“Symlink”
这些设置也可以通过registry直接操作(需要本地pipe理员编写):
registry项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
registry值(名称/数据对):
Name Type Data (1: Enabled; 0: Disabled) ------------------------------------------------- SymlinkLocalToLocalEvaluation REG_DWORD 1 SymlinkLocalToRemoteEvaluation REG_DWORD 1 SymlinkRemoteToLocalEvaluation REG_DWORD 1 SymlinkRemoteToRemoteEvaluation REG_DWORD 1
官方文档很难find,但这似乎是一个官方的微软网页: select性地允许评估一个符号链接
仅供参考,如果您有控制符号链接评估设置的组策略,您仍然可以从命令行自行设置它们。 在下一次重新启动/login时,它们将被GP覆盖,但您的设置将在用户会话期间起作用。
所以作为一种解决方法,如果您需要将其设置为GP所规定的以外,甚至可以在login时运行脚本以在应用GP之后设置它们。
远程连接点默认工作。 对于文件,你仍然需要符号链接。