C# detect folder junctions in a path

做~自己de王妃 提交于 2019-11-29 12:18:03

问题


I want to make a quick check if in a complete path a Junction point is used. I already have a function to test a folder like IsJunction() but maybe there is an other solution to not call IsJunction() on every subfolder.

So I'm looking for a function like HasJunctionsInPath(string path) without testing each folder of the path.

Is there something which can do this?

Edit:

Or better...

Is it possible to resolve all junctions in a path to get the real location of a file or folder? This would be even better solve my problem and I still can compare the result with the original path to implement a bool HasJunctionsInPath(string path) function.


回答1:


Look at the solution of Jeff Brown.

He implemented your features in a static class, that seems to just work fine.

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




回答2:


As far as I know there's no out of the box implementation in c# to handle junctions / reparse points directly.

So you have to do some interop with kernel32.dll. This is a bit tricky, but you find samples. You'll need the CreateFile() & DeviceIoControl() calls.

Here is a good sample to start: http://www.codeproject.com/KB/vista/ReparsePointID.aspx?display=Print

useful msdn links:

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



来源:https://stackoverflow.com/questions/4943630/c-sharp-detect-folder-junctions-in-a-path

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!