Корзина для сетевых папок

Тема в разделе "WASM.WIN32", создана пользователем Folk Acid, 25 ноя 2005.

  1. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Интересует, как можно организовать корзину на сервере, в которую будут попадать файлы, удаляемые из сети.



    Те функции, которые есть в Винде , насколько я понял, позволяют получить уведомление о том что файл уже удален, а мне нужно перенести файл куда-то до удаления.
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Если ты имеешь ввиду вместо перемещения файлов в локалькую корзину, переносить их в "корзину" на сервере, то это очень просто реализуеться:

    Перехват удаления файла.

    В процедуре перехвата ты можеш зделать фильтр.

    Когда нашел файл нужный для переноса, просто вместо оригинальной функций вызываешь функцию для переноса файла на сервер, и возвращаешь STATUS_SUCCESS, если файл можна удалять дергаешь оригинальную функцию.
     
  3. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    MegaZu

    Во-первых, насколько я знаю, если удаляется с сетевой папки, то даже в локальную корзину не поступает. Ну да ладно, это разрешимо перехватом удаления файла на клиенте.



    Но вот с перехватом удаления файла на сервере есть проблемы. Как я понимаю, работа с файлами по сети на сервере реализована через ntoskrnl.exe. (В этом легко убедиться, если посмотреть, кто слушает порты netbios). В таком случае даже хуканье NtCreateFile не поможет (т.к. эта ф-я экспортируется из ntoskrnl.exe). Но даже если и поможет, работа с нулевым кольцом чревата BSOD'ом, поэтому мне это не нравится.



    Кстати, даже утилиты Руссиновича filemon и fundelete не хукают файлы, измененные по сети.
     
  4. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Я незнаю как работает механизм удаления с сетевых папок. Когда ты удаляешь файли , ОСька вряд ли ,сначала, знает откуда файлы. Я думаю что она пытается удалять их как локальние. А конечная функция удаления чекает кого она будет удалять, и либо мувает их в корзину либо удаляет на всегда. У меня сейчас под рукой нету сайса чтоб проверить.



    ЗЫ. ИМХО))
     
  5. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Может, кто знает стабильный драйвер-фильтр файловой системы с исходниками? Только чтобы он работал с файлами, изменяемыми из сети!
     
  6. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    кстати говоря, хук на ZwDeleteFile в случае с удалением файлов по сети не пройдет (в смысле ничего не отловит). можете проверить.
     
  7. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    утверждают (сам не знаю, не проверял еще) что нормально работает filespy из MICROSOFT.WINDOWS.SERVER.V2003.IFS.DDK-ISO.LeDreactor.iso



    (http://delphikingdom.com/asp/answer.asp?IDAnswer=38185)
     
  8. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Folk Acid



    Если на сервере удаляються файлы, то это делает сам сервер по запросу клиента. Посути, клиент обращаеться к редиректору, который уже в свою очередь к драйверу файловой системы сервера. Это упрощеная схема. Более детально в книге Руссиновича.

    Утилита спокойно должна ловить файлы, удаляемые компом, где она запущена. Ведь файлы удаляет именно он по запросу клиентов.

    http://www.sysinternals.com/Utilities/Fundelete.html



    Или я не понял сути вопросса?
     
  9. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Видимо я не понял сути ? Тогда второй вариант.



    Удалить файл можно двумя путями:

    1.ZwDeleteFile

    2.ZwSetInformationFile передав в 5-ом параметре информационный класс FileDispositionInformation==13.



    Проблема в том, как определить сетевой файл. Если используется UNC имя то дальше работает символьная ссылка… короче MUP с редиректором разруливают ситуацию.

    Другое дело когда обращение идёт к подключённому сетевому диску. Тогда нужно пройтись по объектах каталога \?? и определить символьную ссылку на что-то типа \Device\LanmanRedirector\ТЫРЫ-ПЫРЫ. Если нашли – значит сетевой диск, иначе локальный (конечно это можно сделать и попроще). Извини, но всё это очень упрощённо. Пересказывать книги я не буду.



    В любом случае, если не найдёшь готовых утилит то хук-драйвер, как не крутись, придётся писать. Для этого понадобиться куча макулатуры, в которой на первом месте будет лежать «Внутреннее устройство Windows2000» Руссиновича и Соломона, а также книга Гери Неббета «Справочник по базовым функциям API Windows NT/2000»
     
  10. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    to Folk Acid



    ну для этого всего-то навсего надо было Руссвичу добавить ланредерект и все.
     
  11. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    в плане "нормально", все что мне попадалось отвечают этому требованию.

    просто к примеру Filemon от Руссовича, не стоит брать за основу, по крайней мере так утверждают "великие" :), но для саомобразования, оно самое то, с чего бы стоило начинать.
     
  12. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    slow

    Ну ты шустрый :) На дельфикингдом - это я был :)



    DelExe

    Перехватить на клиенте - не проблема. Но меня это не устраивает. На сервере - нужно. Сейчас осталась одна проблема - скрестить filespy из IFS и Fundelete



    Кстати, что за книжка Руссиновича и Соломона? Это не она? Там ничего по программированию нет, только общий трендеж.
     
  13. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    slow, а линк можно на "MICROSOFT.WINDOWS.SERVER.V2003.IFS.DDK-ISO.LeDreactor.iso"?
     
  14. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    LuckyDevil

    „Кстати, даже утилиты Руссиновича filemon и fundelete не хукают файлы, измененные по сети“

    ну для этого всего-то навсего надо было Руссвичу добавить ланредерект и все.




    Я имею в виду что не хукают то что из сети к нам ползёт, а не то что мы меняем в сети
     
  15. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Folk Acid, что именно ты понимаешь под "к нам ползёт", быть может я не правильно тебя понял.

    вообще-то твой Filemon, должен тебе показывать, файловую активность в независимости от того, по сети к нему доступ але локально, это точно и проверено 100 раз.

    в такой раскладке точно покажет:

    \\yourServer\c$\foo.txt
     
  16. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Folk Acid, не поленился проверил в 101 раз, работает. Либо я тебя вовсе не понял.
     
  17. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Захожу удаленно со своей тачки на другую, с нее открываю \\мой_комп\c$\autoexec.bat - Sysinternals Filemon ничего не показывает, IFS FileSpy показывает
     
  18. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Folk Acid, вот они грабли, отсюда делай вывод, что FileMon, это игрушка для начинающих.

    Сорри, сам то я тоже Filespy просматривал.

    Как бы там ни было, а файловую активность ты наблюдаешь, именно это тебе и нужно было
     
  19. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    LuckyDevil

    только в осле

    ed2k://|file|[MICROSOFT.WINDOWS.SERVER.2003.IFS.DDK].MICROSOFT.WINDOWS .SERVER.V2003.IFS.DDK-ISO.LeDreactor.bin|218879472|19A30309C3FD2CB7731 1E66794E2DC32|/

    200 метров
     
  20. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    а воще надо порыться в гугле :) мож чего найдется :)