在网络共享中跟踪 Windows 符号链接

Mat*_*att 4 windows-server-2008 windows-7 network-share symbolic-link symlink

我有一个共享文件夹,我们称之为

e:\folder2\
Run Code Online (Sandbox Code Playgroud)

“每个人”都具有共享和文件系统的读取权限。

从命令行,使用 pwd

e:\folder2\
Run Code Online (Sandbox Code Playgroud)

我跑了

mklink /D slF1 e:\folder1
Run Code Online (Sandbox Code Playgroud)

两个文件夹(folder1,folder2)的权限相同(每个人都具有网络访问和文件系统访问的读取权限)

当我尝试打开时

\\thismachine\folder2\slF1\
Run Code Online (Sandbox Code Playgroud)

我收到可访问性错误。

这还能行得通吗?如果是的话,有什么技巧呢?

编辑:如果我直接共享符号链接 slF1,它就可以工作——也就是说,我可以共享 \thismachine\slF1\

编辑二:我尝试了 sysadmin1138 的建议。除非我运行,否则我无法让它工作:

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Run Code Online (Sandbox Code Playgroud)

然后,我必须对目录使用连接,对文件使用硬链接。这有点奇怪。我错过了什么吗?明天早上我会接受你的答复。谢谢!

sys*_*138 5

符号链接的目标需要能够被读者访问。就你而言...

E:\
|- Folder1\
|- [share]Folder2\
      |- slF1
Run Code Online (Sandbox Code Playgroud)

如果“slF1”指向“E:\Folder1\”,客户端将无法访问它。事实上,如果你这样做了:

E:\
|- Folder1\
|- [share]Folder2\
      |- Folder3\
      |- slF3
Run Code Online (Sandbox Code Playgroud)

并使“slF3”成为“E:\Folder1\Folder3”的链接,但它仍然无法工作,因为客户端不知道如何访问“E:\”。但是,如果您将“slF3”设置为“\\Server\Share\Folder3”的链接,那么它就可以正常工作。要使其按照您希望的方式工作:

E:\
|- [F1Share]Folder1\
|- [F2share]Folder2\
      |- slF1
Run Code Online (Sandbox Code Playgroud)

使“slF1”成为 \\server\F1Share\ 的链接,它应该像您需要的那样工作。

mklink /D slF1 \\Server\F1Share\

需要记住的是,符号链接是客户端明确遵循的路径,就好像它是快捷方式图标一样。您链接到的内容将是客户尝试附加到的内容。共享在提供链接之前不会取消引用链接,客户必须支持它们。对于无法处理连接的旧客户端来说,这可能是一个问题。

直接共享它起作用的原因是因为 Windows 在该实例中实际上共享 E:\Folder1,并且客户端永远不会触及符号链接。