C#检测路径中的文件夹连接

我想快速检查是否在完整路径中使用了连接点。 我已经有一个函数来测试像IsJunction()这样的文件夹,但也许还有另一个解决方案是不在每个子文件夹上调用IsJunction()

所以我正在寻找像HasJunctionsInPath(string path)这样的函数而不测试HasJunctionsInPath(string path)每个文件夹。

有什么能做到这一点吗?

编辑:

或更好…

是否可以解析路径中的所有联结以获取文件或文件夹的真实位置? 这将更好地解决我的问题,我仍然可以将结果与原始路径进行比较,以实现bool HasJunctionsInPath(string path)函数。

看看杰夫布朗的解决方案。

他在一个静态类中实现了你的function,似乎工作得很好。

http://www.codeproject.com/KB/files/JunctionPointsNet.aspx

据我所知,c#中没有开箱即用的实现来直接处理连接点/重新分析点。

所以你必须与kernel32.dll进行一些互操作。 这有点棘手,但你找到了样品。 您需要CreateFile()和DeviceIoControl()调用。

以下是一个很好的示例: http : //www.codeproject.com/KB/vista/ReparsePointID.aspx?display = Print

有用的msdn链接:

http://msdn.microsoft.com/en-us/library/cc232007%28PROT.13%29.aspx

http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/aa363216%28v=vs.85%29.aspx

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7acd564f-0e9f-4295-8609-916af6675f0a