Подтвердить что ты не робот

С# обнаруживает переходы в папке пути

Я хочу сделать быструю проверку, если в полном пути используется точка соединения. У меня уже есть функция для проверки папки типа IsJunction(), но, возможно, есть другое решение, чтобы не вызывать IsJunction() в каждой подпапке.

Итак, я ищу функцию типа HasJunctionsInPath(string path) без проверки каждой папки пути.

Есть ли что-то, что можно сделать?

Edit:

Или лучше...

Можно ли разрешить все переходы в пути, чтобы получить реальное местоположение файла или папки? Это еще лучше решит мою проблему, и я все же могу сравнить результат с исходным путем для реализации функции bool HasJunctionsInPath(string path).

4b9b3361

Ответ 1

Посмотрите на решение Джеффа Брауна.

Он реализовал ваши функции в статическом классе, который, кажется, просто отлично работает.

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

Ответ 2

Насколько я знаю, в С# не существует встроенной реализации для непосредственного управления точками переходов/повторной обработки.

Итак, вам нужно сделать interop с 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