Как я могу программно различить жесткие ссылки от реальных файлов в Windows 7?
Вопрос
У меня есть разница между размером файлов и использованным дисковым пространством (общий размер файла даже больше, чем размер диска). Полагаю, потому что существует много жестких ссылок (к компонентам Winsxs) в Windows 7 / Vista. Но как я могу программно различить жесткие ссылки от реальных файлов в Windows 7?
Решение
Вы не можете, потому что все файлы являются жесткими ссылками. Нетствием. Файл - это просто жесткая ссылка на кусок данных - список в каталоге. (Возможно, вы имеете в виду симлитные ссылки? Вы могу отличить тех ...)
Используйте встроенные методы Windows, обеспечивающие для расчета используемого пространства.
РЕДАКТИРОВАТЬ: Ссылка (Упор мой)
Сама ссылка - только запись каталога, И не имеет дескриптора безопасности. Поэтому, когда вы изменяете дескриптор безопасности жесткой связи, вы измените дескриптор безопасности базового файла, и все жесткие ссылки, которые указывают на файл, позволяют вновь указанным доступе.
Другие советы
Ты неверно Различают жесткие ссылки из «реальных файлов». Запись каталога для «реального файла» - это еще одна жесткая ссылка. Возможно, вы имели в виду символическую ссылку.
POSIX имеет A. stat
Функция (называется _stat
В Windows), которые могут обнаруживать несколько ссылок на один и тот же файл, который будет иметь тот же «inode» номер.
Использовать Getfileinformationbyhandle () и проверьте возвращенные By_handle_file_information. Nnomberoflinks Член для значения> 1.