1

我不确定这只是 C# 问题还是 Windows 限制。

我有一台运行我的程序的服务器,它在共享文件夹中创建符号链接。我可以通过此链接从具有普通磁盘路径和共享路径的服务器访问。

如果我尝试与另一台电脑访问相同的共享,我将无法访问链接的文件。我确实可以删除重命名...链接,但我无法点击链接。

我已经检查了链接的 acl 和目标文件。每个人都应该能够访问。

我使用以下功能:

[DllImport("kernel32.dll")]
static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);

也许我只需要设置一些额外的东西?还是我必须更改服务器上的一些 Windows 设置?

抱歉,如果解决方案不是编程问题,但我认为在这里我有最好的机会获得帮助。

编辑1:

我有共享:C:\share

一个链接:C:\share\file.txt

到目的地:D:\file.txt

如果我从另一台电脑访问共享,我将无法访问 file.txt 的数据。

4

1 回答 1

0

Tuxera 的这个页面很好地描述了原因

Windows Vista 中也提供了类似的符号链接概念。符号链接可以重定向到由绝对或相对路径定义的文件或目录。当在远程文件系统上定义时,它们在本地系统上处理,而目录连接在文件服务器上处理,这在文件服务器无法访问目标时会有所不同。

CreateSymbolicLink 函数将创建一个将由客户端解释的链接。因此,客户端计算机(不是服务器)正在尝试访问名为 d:\file.txt 的文件,该文件在客户端上当然不存在。

对于 Windows,Junction 或Reparse Point将在像您的示例这样的服务器上工作。在代码之外创建一个最简单的方法是使用 SysInternals Junction 工具

于 2011-12-21T17:06:33.150 回答