Здравствуйте, Ejik123, Вы писали:
E>помогите пожалуйста у меня такая проблема надо написать программу которая будет отлавливать все изменения в файлах на всех локальных дисках.
Это просто — включаешь журналирование функцией FindFirstChangeNotification и читаешь журнал ReadDirectoryChangesW.
Подробно в MSDN
E>и обрашения то есть если позьзователь ни чего не изменяя открывает папку или файл чтобы она это показала. короче аналог программы filemon от sysinternals
Это только через зад, т.е. через драйвер. На Delphi писать его проедсатвляется несколько нереальным
Хотя есть и другие способы — перехват API (не хук), описанный у Рихтера в главе "Перехват API-вызовов с использованием раздела импорта".
Здравствуйте, Ejik123, Вы писали:
K>>Раз должна следить, то надо перехватывать вызовы функции ntOpenFile и т.п. — значит только драйвер. Другого пути просто нет. Именно драйвер может проверять и разрешать. K>>Драйвера режима ядра пишут на C. Причем на чистом C без плюсов. Точнее так писать проще всего — это естественный путь. E> понятно значит вляпался по самое не балуйся а можно где нить прочитать или еще лучше получить исходничек этого самого драйвера малоли может ещё кому нить прижало такую прогу писать. и еще если я вдруг напишу(найду) этот драйвет как с ним из делфы работать? и если не трудно можно конкретнее что за драйвер должен быть и хотябы в двух словах как его раелизовать
Это драйвер фильтра запросов к файловой системе верхнего уровня. Дальше — RTFM NT DDK — там все есть. На делфи его написать можно, но нужно будет вручную половину хедеров переписать. filemon, кстати, через драйвер и работает. Исходники примеров драйверов есть в ДДК. Как с ним работать поймеш после его написания
добрый день
помогите пожалуйста у меня такая проблема надо написать программу которая будет отлавливать все изменения в файлах на всех локальных дисках. и обрашения то есть если позьзователь ни чего не изменяя открывает папку или файл чтобы она это показала. короче аналог программы filemon от sysinternals
как это сделать буду рад любой помощи
почитал но всеравно остается много вопросов
точнее один самый интересный моя оснавная задача не отследить изменение в файле или каталоге а отловить факт !!ПОПЫТКИ!! открытия файла или каталого. а затем уже решать разрешить открытие или нет.
Здравствуйте, Ejik123, Вы писали:
E>почитал но всеравно остается много вопросов E>точнее один самый интересный моя оснавная задача не отследить изменение в файле или каталоге а отловить факт !!ПОПЫТКИ!! открытия файла или каталого. а затем уже решать разрешить открытие или нет.
необходимо ставить хук именно на попытку отрытия файла системой.
Здравствуйте, Ejik123, Вы писали:
E>если бы все было так просто ставить хук проблема заключается в том как это сделать если не трудно подскажите какие функции это выполняют
трудно очень давно это делал, да и немного. так что все таки гугль и мсдн. етм более что направление указано
напаравление то указанно вот только правильно ли я его сформцлировал дело в том надо написать программку не аналог filemon а аналог folderguard. и поэтому как я представил программа должна быть больше похожей на filemon по крайней мере изнутри но сейчас мне начинает казаться что я очень ошибался кажется folderguard работает по другому принципу и если кто нить занает по какому скажите плс
Здравствуйте, Ejik123, Вы писали:
E>напаравление то указанно вот только правильно ли я его сформцлировал дело в том надо написать программку не аналог filemon а аналог folderguard. и поэтому как я представил программа должна быть больше похожей на filemon по крайней мере изнутри но сейчас мне начинает казаться что я очень ошибался кажется folderguard работает по другому принципу и если кто нить занает по какому скажите плс
ничего не понял. распиши плс подробно? ТЗ чтоли
... << RSDN@Home 1.2.0 alpha rev. 618>>
слушаю: Secret Service — [Dance Hits And Remixes #17] Night City [foobar2000 v0.8.3]
надо писать нечто похожее на folderguard. а если подровнее то программа должна сидеть и постоянно отслеживать кто и куда лезет а потом разрешать ему это делать или нет.
со второй половиной я примерно знаю что делать а вот с первой СИДЕТЬ И СЛЕДИТЬ я не знаю думал что принцип должен быть как у filemon а потом подумал что нет в итоге запутался и сам и вса всех запутал.
Здравствуйте, Ejik123, Вы писали:
E>надо писать нечто похожее на folderguard. а если подровнее то программа должна сидеть и постоянно отслеживать кто и куда лезет а потом разрешать ему это делать или нет. E>со второй половиной я примерно знаю что делать а вот с первой СИДЕТЬ И СЛЕДИТЬ я не знаю думал что принцип должен быть как у filemon а потом подумал что нет в итоге запутался и сам и вса всех запутал.
раз она должна сидеть, то программа резидентная. Значит это служба или драйвер.
Раз должна следить, то надо перехватывать вызовы функции ntOpenFile и т.п. — значит только драйвер. Другого пути просто нет. Именно драйвер может проверять и разрешать.
Драйвера режима ядра пишут на C. Причем на чистом C без плюсов. Точнее так писать проще всего — это естественный путь.
Если вы в силах написать свой собственный драйвер файловой системы, то пишите. Там нет ничго сложного, но нужны специфические знания, а также DDK.
Иначе закажите разработку где-нибудь еще.
Либо перейдите на другие средства доступа к файлам — например, FTP-сервер.
K>Раз должна следить, то надо перехватывать вызовы функции ntOpenFile и т.п. — значит только драйвер. Другого пути просто нет. Именно драйвер может проверять и разрешать. K>Драйвера режима ядра пишут на C. Причем на чистом C без плюсов. Точнее так писать проще всего — это естественный путь.
понятно значит вляпался по самое не балуйся а можно где нить прочитать или еще лучше получить исходничек этого самого драйвера малоли может ещё кому нить прижало такую прогу писать. и еще если я вдруг напишу(найду) этот драйвет как с ним из делфы работать? и если не трудно можно конкретнее что за драйвер должен быть и хотябы в двух словах как его раелизовать
спасибо уже понятнее становится вот если бы только что нить подкинут пару ресурсов или книг где все это хорошо написано буду очень рад и еще кто нить сам писал такую ерунду?
спасибо уже понятнее становится вот если бы только что нить подкинут пару ресурсов или книг где все это хорошо написано буду очень рад и еще кто нить сам писал такую ерунду?
и еще скажите пожалуйста filemon использует драйвер написанный только под себя или его как нить хитро можно использовать в своих программах если да то как????
Здравствуйте, Ejik123, Вы писали:
E>надо писать нечто похожее на folderguard. а если подровнее то программа должна сидеть и постоянно отслеживать кто и куда лезет а потом разрешать ему это делать или нет. E>со второй половиной я примерно знаю что делать а вот с первой СИДЕТЬ И СЛЕДИТЬ я не знаю думал что принцип должен быть как у filemon а потом подумал что нет в итоге запутался и сам и вса всех запутал.
В Демках к дельфе есть пример. помоему по работе с СОМ-объектами. так вот там регистрируется в системе библиотека, и когда ты производишь дествия — (копирование файла) — она вываливет свое окно с предупреждением. {$DELPHI}\Demos\ActivX\ShellExt\CopyHk.dpr.
коковыряй ее и посмотри как это борманы делают, а заодно по этому же пути в МСДН поищеш.
Здравствуйте, prima_lux, Вы писали:
_>На делфи его написать можно, но нужно будет вручную половину хедеров переписать.
В Delphi нарписать его НЕЛЬЗЯ!!!
Можно написать только часть кода, но в итоге без инструментов DDK не обойтись. А они понимают только файлы от Delphi 3.
ИМХО, лучше и проще написать его на C. Драйвер элементарный.
Здравствуйте, Ejik123, Вы писали:
E>если при компиляции создается ДЛЛ так вогт как ею пользоваться
Нужно написать еще одну программку, которая будет вызывать функции из этой DLL.
В файле проекта DLL есть раздел exports — в нем описаны функции, которые "видны" из этой DLL.
Тебе нужно в своей программе объявить такие же, но после объявления написать external, имя dll и имя функции (или номер в списке экспорта):
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external'user32.dll' name 'SendMessageA';
Здравствуйте, svd71, Вы писали:
S>В Демках к дельфе есть пример. помоему по работе с СОМ-объектами. так вот там регистрируется в системе библиотека, и когда ты производишь дествия — (копирование файла) — она вываливет свое окно с предупреждением. {$DELPHI}\Demos\ActivX\ShellExt\CopyHk.dpr.
Это немного не то. Это Shell Extension. Оно прекрасно работает, но только через эксплорер
Здравствуйте, Ejik123, Вы писали:
K>>Это немного не то. Это Shell Extension. Оно прекрасно работает, но только через эксплорер
E>если я правильно понял то при при выполнении операции на которую поставлена ловушка например через far он ни капельки не ругнется