Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Отследить какие файлы создает/удаляет приложение??


Автор: Nicholas 5.1.2005, 08:52
SFX-архив (WinRar) из своей программы запустил,
а дальше мне надо узнать какие файлы и каталоги,
и где он создаст (что и куда распакует)?????

Автор: Akella 5.1.2005, 10:23
Используй такие программы как FileMonitor RegMonitor
в противном случае задавай вопросы в теме "Системное программирование" типа, создание хука.
Хук - это ловушка.

Автор: Snowy 5.1.2005, 10:32
Проще всего - при создании sfx архива, добавить в поле "Запустить после распаковки" свою программу, которая запустится из каталога, куда все распаковалось и созхранит/передаст куда-нить все необходимые данные.

Автор: Nicholas 6.1.2005, 07:13
Цитата(dsergey @ 5.1.2005, 10:23)
Используй такие программы как FileMonitor RegMonitor


Есть они у меня, но вопрос то в том как обойтись без них!!!
Добавлено @ 07:15
Цитата(Snowy @ 5.1.2005, 10:32)
Проще всего - при создании sfx архива, добавить в поле "Запустить после распаковки" свою программу, которая запустится из каталога, куда все распаковалось и созхранит/передаст куда-нить все необходимые данные


Все дело в том, что распаковка может осуществляться в каталоги в которых уже есть файлы!!!

Мне требуется, процедурка спомобная отследить действия, определенной программы.

Автор: Snowy 6.1.2005, 09:38
Тогда, при создании SFX архива пропиши в поле "запускать до распаковки" пропиши "command /c dir /b>files.lst"
В поле "запускать после распаковки" свою програмку.
В программе уже анализируй список, который будет скинут в files.lst
В крайнем случае, раз уж запускаешь sfx из своей программы, то можешь из sfx-a вызвать вторую копию своей программы, только с определенным ключем, чтобы она провела весь анализ. Если запуск прописать в параметрах sfx, то тукущей папкой будет папка распаковки.

Автор: Akella 6.1.2005, 12:27
может поможет TShellNotifyEvent? Хотя сам не пользовался

Автор: Nicholas 8.1.2005, 08:09
Да,вероятно здесь без помощи p0s0l не обойтись! smile

p0s0l, я в тебя верю подскажи, как такое сатворить?

Автор: p0s0l 8.1.2005, 14:39
Nicholas, если уж обращаешься ко мне, то пиши в PM - это незачем другим читать, да и я могу не увидеть... Правила форума... smile

Если архив делаешь не ты, то попробовать смотреть содержимое ListBox'а, в котором выводится инфа о процессе распаковки...
Если SFX консольный - то еще проще - в DRKB есть статья, как забарабать себе вывод консоли чужого процесса...

Как крайняя мера - перехватывать функции создания файлов...

Автор: p0s0l 8.1.2005, 14:40
Перенесенно из раздела Delphi

Автор: RA 8.1.2005, 18:05
Hook поставь на всё это, пример есть в арсенале и тут http://forum.vingrad.ru/index.php?showtopic=38327

Автор: Nicholas 10.1.2005, 09:42
Цитата(p0s0l @ 8.1.2005, 14:39)
смотреть содержимое ListBox'а


А как его смотреть? smile

Автор: p0s0l 10.1.2005, 22:22
Надо юзать сообщение LB_GETTEXT.
Пример попозже кину, если не разберешься.
Или Girder поди поможет ? smile


Автор: Girder 12.1.2005, 04:30
Цитата(p0s0l @ 10.1.2005, 22:22)
Или Girder поди поможет ?
А нафиг? smile

Ладно... вот пример набросал под NT. Файл Filemon.sys удалять не надо smile - а то работать не будет.

PS: Я сделал слежение за всем. Если не разберешся куда свой код вставить(CreateProcess, WaitForSingleObject и т.п.) и куда фильтер на идентификатор запущенного процесса пихать - чиркни... объясню. Хотя ни чего сложного не вижу... что б тебе самому справиться smile

p0s0l как только будет время... smile сделаю из данного примера компонент.

Удачи.

Автор: p0s0l 12.1.2005, 22:49
Цитата(Girder @ 12.1.2005, 04:30)
Ладно... вот пример набросал под NT
Если компонент писать будешь - делай и под 9x smile

ЗЫ: Где достал описалово функций FileMon.sys ? Вроде на их сайте не видал...
Сам поди раскопал ? smile
Если знаешь функции других ихних драйверков (главное мне нужно - procexp.sys), то скинь мне, плиз smile, буду очень благодарен!

Автор: RA 12.1.2005, 23:39
Цитата(p0s0l @ 12.1.2005, 22:49)
Если знаешь функции других ихних драйверков (главное мне нужно - procexp.sys), то скинь мне, плиз , буду очень благодарен!


И мне тоже если можно.

Автор: Girder 13.1.2005, 13:05
Цитата(p0s0l @ 12.1.2005, 22:49)
ЗЫ: Где достал описалово функций FileMon.sys ? Вроде на их сайте не видал...
Сам поди раскопал ?
Конечно сам.

Цитата(p0s0l @ 12.1.2005, 22:49)
Если знаешь функции других ихних драйверков (главное мне нужно - procexp.sys), то скинь мне, плиз , буду очень благодарен!
Если будет очень нужно... могу копнуть в выходные. smile

Автор: Nicholas 14.1.2005, 04:46
Цитата(RAdmin @ 12.1.2005, 23:39)
главное мне нужно - procexp.sys


Люди не забудьте про меня!!! smile

Цитата(Girder @ 13.1.2005, 13:05)
Если будет очень нужно... могу копнуть в выходные. 


Girder, ты не против все, что найдешь здесь выложить?

Автор: Nicholas 14.1.2005, 04:58
Цитата(Girder @ 12.1.2005, 04:30)
Ладно... вот пример набросал под NT.


У меня XP.


smile В общем так: Если программа аварийно завершилась, то function Install что-то мудрить начинае при последующей загрузке и возвращает ноль, пока не разобрался может дело в системе.

НО, МЕНЯ ВОЛНУЕТ МАСКА!!! Какой синтаксис???

Написано Filter:='*' - понятно все файл, а мне к примеру надо файл 2.exe - значит пишем Filter:='2.exe' так не работает, Filter:='*.exe' тоже!

Может я че не так понял и это фильт не к файлам относиться????

И еще, я не уверен, но кажется при подключенном инете возникает зацикливание (покрайней мере у меня) и кнопку Stop нажать невозможно!!

Автор: Girder 14.1.2005, 10:25
Цитата(Nicholas @ 14.1.2005, 04:58)
Написано Filter:='*' - понятно все файл, а мне к примеру надо файл 2.exe - значит пишем Filter:='2.exe' так не работает, Filter:='*.exe' тоже!
Там надо исправить строку: Include:=trim(Include); на Include:=UpperCase(trim(Include)); и тогда ты можеш даже так писать: 'explorer.exe; 2.exe' или например твой процесс имеет идентификатор ID=2000, тогда можеш написать Filter='2000'. Но на всякий случай pID все равно надо проверять smile

Цитата(Nicholas @ 14.1.2005, 04:58)
И еще, я не уверен, но кажется при подключенном инете возникает зацикливание (покрайней мере у меня) и кнопку Stop нажать невозможно!!
Просто енто надо в отдельный поток заворачивать... пока некогда... чуть по позже. Я p0s0l выслал исправленную версию... для теста... в выходные буду закругляться. smile

PS:Че-то я не нашел procexp.sys smile

Цитата(Nicholas @ 14.1.2005, 04:46)
Girder, ты не против все, что найдешь здесь выложить?
Здесь нет. Один топик... один вопрос!. smile

Цитата(Nicholas @ 14.1.2005, 04:58)
понятно все файл
Нет... сверка идет по все строке. Кроме даты, смещения, и размера. smile К примеру: Total запускает explorer, Filter='explorer' то вывод произойдет. В процессах будет значится Total, а где то по пути будет видно что обращение к explorer-у smile

Автор: Nicholas 14.1.2005, 12:18
Цитата(Girder @ 14.1.2005, 10:25)
Здесь нет.


Тогда на мыло мне скинь, интерсено посмотреть как это все в итоге выглядеть будет! smile

Автор: RA 15.1.2005, 06:26
Цитата(Girder @ 14.1.2005, 10:25)
Че-то я не нашел procexp.sys


Она в ресурсах procexp.exe

Комодератор: Да... да, я уже нашел и потехоньку извлекаю smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)