Как проверить на наличие Жестких ссылок?

Тема в разделе "WASM.BEGINNERS", создана пользователем hunt, 18 ноя 2009.

  1. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Здравствуйте! Подскажите, пожалуйста, какими функциями можно проверить, что один из двух файлов является или не является жесткой ссылкой? Как можно сравнить адреса этих файлов на жестком диске?
     
  2. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Жаль, что нельзя отредактировать пост.
    Вообщем, вот: "Как можно узнать и сравнить адреса этих файлов на жестком диске?"
     
  3. botmen

    botmen Member

    Публикаций:
    0
    Регистрация:
    2 сен 2007
    Сообщения:
    43
    Жёсткие ссылки указывают на один файл. разве нет?
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    А какая FS? Если речь идет про *nix, то можно пойти более простым путем: в индексном дескрипторе сохраняется количество жестких ссылок на файл. Соответственно, надо обойти всю FS, чтобы найти файл с таким же индексным дескриптором. А понятия "кто главнее" чаще всего в *nix FS нет.
     
  5. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Файловая система - NTFS. В MFT же должен располагаться адрес расположения файла на винчестере. И моя проблема заключается в том, как узнать этот адрес (или наверно кластер) этого файла. Может быть такая ситуация, что две идентичные записи (файлы) в MFT будут указывать на один и тот же адрес (кластер) на винчестере. Отсюда следует, что одна из этих записей была создана как жесткая ссылка.
     
  6. botmen

    botmen Member

    Публикаций:
    0
    Регистрация:
    2 сен 2007
    Сообщения:
    43
    так эти ссылки и есть файл. все без исключения. так должно быть. если удалить хоть одну, то ФС укажет на повреждение
     
  7. botmen

    botmen Member

    Публикаций:
    0
    Регистрация:
    2 сен 2007
    Сообщения:
    43
    а вообще - время создания должно отличаться
     
  8. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    botmen никакого повреждения не будет в файловой системе. не путай жесткие ссылки с символьными.
     
  9. botmen

    botmen Member

    Публикаций:
    0
    Регистрация:
    2 сен 2007
    Сообщения:
    43
    неправильно выразился. я имел ввиду: удалить в обход ФС. (несоответствие счётчика ссылок их количеству).
    короче, непонял я проблему
     
  10. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    я тоже не понял про удаление в обход файловой системы и про несоответствие счётчика ссылок их количеству.
    Я единственно видел (читал) пару месяцев назад про символьные и жесткие ссылки. Там было написано, что ничего страшного не будет, когд удалишь жесткую ссылку. Только когда ниодной записи не останется на этот файл в mft, то файла не становится, но физически то все равно остаётся на винте.

    Вот пример, есть 2 файла:
    1. "C:\CS1.6-patch32\hl.exe"
    2. "C:\CS1.6-patch35\hl.exe"
    Как мне узнать, что один из этих файлов не является жесткой ссылкой?
    Это можно узнать, если проверить эти две записи в mft, и узнать кластер, с которого начинаются данные этих файлов. Если кластер один и тот же, значит один из этих файлов был создан, как жесткая ссылка.
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Всё, что нужно, выдаёт функция GetFileInformationByHandle - и число жёстких ссылок на файл, и идентификатор файла в файловой системе (который одинаков для всех жёстких ссылок). Кстати, некорректно говорить "вот это настоящий файл, а вот это жёсткая ссылка" - после создания ссылки у одного физического файла получаются два (или больше) совершенно равноправных имени.
     
  12. botmen

    botmen Member

    Публикаций:
    0
    Регистрация:
    2 сен 2007
    Сообщения:
    43
    честно признаюсь я - ламо (чуть менее, чем всегда), но пошуршав интернетами и, почитав копипаст, пришёл к выводу что: жёсткая ссылка должна иметь в одном из своих аттрибутов ссылку, а настоящий файл - данные.
    Придётся накопать спецификацию на МС сайте
     
  13. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    diamond Спасибо большое :) Работает ))