Как программно отличить жесткие ссылки от реальных файлов в Windows 7? - PullRequest
3 голосов
/ 03 сентября 2010

У меня разница между размером файлов и используемым дисковым пространством (общий размер файла даже больше, чем размер диска).Я полагаю, потому что в Windows 7 / Vista существует много жестких ссылок (на компоненты WinSxS).Но как я могу программно отличить жесткие ссылки от реальных файлов в Windows 7?

Ответы [ 3 ]

5 голосов
/ 03 сентября 2010

Вы не можете, потому что все файлы являются жесткими ссылками. Нет, правда. Файл - это просто жесткая ссылка на блок данных - список в каталоге. (Возможно, вы имеете в виду символические ссылки? Вы можете различать эти ...)

Используйте встроенные методы, которые Windows предоставляет для расчета используемого пространства.

РЕДАКТИРОВАТЬ: Ссылка (выделено мое)

Сама ссылка является только записью каталога и не имеет дескриптора безопасности. Следовательно, когда вы изменяете дескриптор безопасности жесткой ссылки, вы изменяете дескриптор безопасности основного файла, и все жесткие ссылки, которые указывают на файл, разрешают вновь указанный доступ.

2 голосов
/ 03 июня 2011

Используйте GetFileInformationByHandle () и проверьте возвращенный BY_HANDLE_FILE_INFORMATION nNumberOfLinks член для значения> 1.

2 голосов
/ 03 сентября 2010

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

POSIX имеет функцию stat (называемую _stat в Windows), которая может обнаруживать несколько ссылок на один и тот же файл, который будет иметь одинаковый номер "inode".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...