Date: 01.02.2020 8:18:31
"С помощью DirectoryInfo и GetDirectories можно получить список папок в каталоге. При вызове для папки "с:\" мы получаем среди прочих "папку-ссылку", которой не существует в реальности, например: "Documents and Settings". Как для такой "папки-ссылки" получить реальный путь."
Конкретно Documents and Settings - это Junction. Как получить реальный путь для Junction описано например здесь: https://www.codeproject.com/Articles/21202/Reparse-Points-in-Vista. Но учтите, что это не единственный тип "папки-ссылки" в Windows.
"Подскажите, где чего почитать, чтоб не писать бредовое слово "папка-ссылка" и правильно такие ссылки обрабатывать?"
Устоявшейся русскоязычной терминологии для NTFS-ссылок нет, потому что это довольно низкоуровневая концепция, и документация по ним по большей части не локализована. По ссылке выше вы сами можете увидеть, что работа с Junction требует отправки IOCTL драйверу файловой системы, с Hard links все примерно так же. Англоязычные разделы документации вот:
Как правильно обрабатывать? Я бы сказал, никак. ОС автоматически все делает за вас, прозрачно превращая ссылки в реальные пути, т.е. код File.ReadAllText(@"C:\Documents and settings\Vasya\Documents\myfile.txt"); автоматически прочитает файл "C:\Users\Vasya\Documents\myfile.txt". При выводе списка файлов пользователю, просто скройте ссылки (они и так по большей части являются скрытыми файлами и проводник не показывает их, пока мы его об этом не попросим). Если вы не пишете специфическое системное ПО, вы не должны заморачиваться с NTFS-ссылками.
Date: 01.02.2020 8:22:37
Ну и в дополнение, кто не хочет заморачиваться с IOCTL, можно попробовать парсить вывод cmd. Команда dir /al выводит информацию о ссылках:
c:\>dir /al Том в устройстве C не имеет метки. Серийный номер тома: 489A-49E7 Содержимое папки c:\ 14.07.2009 10:08 <JUNCTION> Documents and Settings [C:\Users] 0 файлов 0 байт 1 папок 1 063 370 752 байт свободно
Автор: VadimTagil