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

Обнаружение символических ссылок, точек соединения, точек монтирования и жестких ссылок

Кто-нибудь знает, как проверить, является ли файл или каталог символом Символическая ссылка, Точка соединения, Точка монтирования или Жесткая ссылка?

Насколько я знаю, символические ссылки обнаруживаются путем проверки файла на его атрибут "ReparsePoint" . Точки соединения обнаруживаются путем проверки каталога для атрибута "ReparsePoint" . Поэтому, если атрибут "ReparsePoint" задан в файле, он должен быть символической ссылкой, иначе, если он установлен в каталоге, он может быть только точкой соединения... правильно?

Хорошо до сих пор, но я до сих пор не знаю, как обнаружить "Mount Points" и "Hard Links". Может ли кто-нибудь сказать мне, как это сделать?

4b9b3361

Ответ 1

Символические ссылки, точки соединения и точки монтирования - все это примеры различных точек повторной обработки. Жесткие ссылки, однако, являются обычными файлами. В NTFS все файлы имеют жесткие ссылки. Вы можете обнаружить, что файл имеет несколько жестких ссылок, указывающих на него, но нет "реального файла", на который он указывает. Вы можете думать о жестких ссылках, как о разных именах для одного и того же файла.

Вот некоторая информация о доступе к точкам повторной обработки с С#: http://www.codeproject.com/KB/vista/ReparsePointID.aspx?display=Print

Вот некоторая информация о том, как это сделать в C: http://blog.kalmbach-software.de/2008/02/

Ответ 2

Жесткие ссылки:

Вы можете обнаружить, что несколько имен указывают на один и тот же "кусок данных" или "содержимое файла", вызывая функцию API Win32 GetFileInformationByHandle. Член nNumberOfLinks из возвращаемой структуры BY_HANDLE_FILE_INFORMATION содержит общее количество ссылок

Точки монтирования:

Вы можете повторять все точки монтирования на томе, используя FindFirstVolumeMountPoint и FindNextVolumeMountPoint. Кроме того, FindVolumeMountPointClose следует использовать для закрытия дескриптора поиска.

От .NET

Выполнение этого с .NET потребует некоторой магии P/Invoke

Ответ 3

См. мой вопрос NTFS Junctions, не понимая API. Это своего рода дубликат вопроса. Но я объясняю все о том, как реализуются точки повторной обработки, точки монтирования, соединения и символические ссылки, используя C/С++. Вместо того, чтобы просто указывать ссылки на API, слепо...