Форум: "Основная";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизКак правильно организовать контроль за запускаемыми файлами? Найти похожие ветки
← →
SkySpeed (2006-10-20 23:19) [0]Необходимо на машине организовать контроль за запускаемыми файлами/программами.
В книжке по реестру прочёл что существует интересный параметр AppInit_DLLs, находящийся здесь: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
И если в данный параметр добавить имя DLL - файла, то при каждом запуске файла, данная DLL-ка будет запускаться
Моя DLL:
library CORP;
uses
SysUtils,
Classes;
{$R *.res}
const
filepath="E:\histapps.txt";
var
s:TStringList;
a:String;
z:Integer;
begin
if ParamCount>0 then
begin
s:=TStringList.Create;
try
s.LoadFromFile(filepath);
except
end;
a:="";
for z:=1 to ParamCount do
a:=a+ParamStr(z);
s.Add(DateToStr(Date)+" : "+TimeToStr(Time)+" : "+a);
s.SaveToFile(filepath);
s.Free;
end;
end.
После помещения данной DLL в папку Windows или System32, большинство имён запускаемых файлов без ошибок добавляются в файл E:\histapps.txt, НО некоторые программы (Delphi, Internet Explorer...) запускаются с двумя ошибками...
Как избежать или предотвратить эти ошибки? ХЕЛП!
← →
Ketmar © (2006-10-20 23:44) [1]>[0] SkySpeed 20-Oct-2006, 23:19
>запускаются с двумя ошибками...
текст которых слишком секретен, чтобы его пубиликовать. читай секретный ответ: "....................................."
← →
SkySpeed (2006-10-21 00:18) [2]
> Ketmar © (20.10.06 23:44) [1]
> >[0] SkySpeed 20-Oct-2006, 23:19
> >запускаются с двумя ошибками...
> текст которых слишком секретен, чтобы его пубиликовать.
> читай секретный ответ: "................................
> ....."
Шутник....
Например, при запуске ИЕ выскакивают:
1 ошибка:
"iexplore.exe - Ошибка приложения" - заголовок окна
Текст окна:
Инструкция по адресу "0x7c918fea" обратилась к памяти по адресу "0x00000010". Память не может быть "written".
"ОК" -- завершение приложения
"Отмена" -- отладка приложения
2 ошибка:
"iexplore.exe - Ошибка приложения" - заголовок окна
Текст окна: Инструкция по адресу "0x0038a775" обратилась к памяти по адресу "0x0000000c". Память не может быть "written".
"ОК" -- завершение приложения
"Отмена" -- отладка приложения
← →
Ketmar © (2006-10-21 00:22) [3]верно выскакивает. потому как подобную DLL на Delphi написать проблематично. в общем случае: нельзя использовать ничего, кроме ntdll.dll и kernel32.dll. ну, разве только advapi32.dll ещё. для чего надо коцать системные модули. осилишь?
← →
Ketmar © (2006-10-21 00:22) [4]кстати, приложения, которые не грузят user32.dll твой модуль не получат.
← →
SkySpeed (2006-10-21 00:28) [5]
> Ketmar © (21.10.06 00:22) [3]
> верно выскакивает. потому как подобную DLL на Delphi написать
> проблематично. в общем случае: нельзя использовать ничего,
> кроме ntdll.dll и kernel32.dll. ну, разве только advapi32.
> dll ещё. для чего надо коцать системные модули. осилишь?
>
М-да... проблематично однако...
> Ketmar © (21.10.06 00:22) [4]
> кстати, приложения, которые не грузят user32.dll твой модуль
> не получат.
Мне хотя бы основные приложения фиксировать
← →
Ketmar © (2006-10-21 00:33) [6]>[5] SkySpeed 21-Oct-2006, 00:28
>Мне хотя бы основные приложения фиксировать
а чем не подходит периодическое снятие снапшотов работающих процессов? по-уму тут вообще надо драйвер писать, кстати. %-)
← →
SkySpeed (2006-10-21 00:37) [7]
> Ketmar © (21.10.06 00:33) [6]
> >[5] SkySpeed 21-Oct-2006, 00:28
> >Мне хотя бы основные приложения фиксировать
> а чем не подходит периодическое снятие снапшотов работающих
> процессов? по-уму тут вообще надо драйвер писать, кстати.
> %-)
При снятии снапшотов, будет необходимо сравнивать предыдущий снапшот с текущим и выбирать новые приложения и файлы
Намного быстрее будет если фиксировать каждое запускаемое приложение
← →
Ketmar © (2006-10-21 00:42) [8]>Намного быстрее будет если фиксировать каждое запускаемое
>приложение
ни разу не быстрее. медленней. и лишний, кстати, расход памяти -- потому что кое-кто не удосужился даже IMAGEBASE прописать.
← →
SkySpeed (2006-10-21 00:47) [9]What is the ImageBase?
← →
Ketmar © (2006-10-21 00:48) [10]$IMAGEBASE, F1.
← →
Eraser © (2006-10-21 00:56) [11]> [5] SkySpeed (21.10.06 00:28)
http://kladovka.net.ru/index.cgi?pid=board&rid=369
← →
Ketmar © (2006-10-21 00:58) [12]>[11] Eraser(c) 21-Oct-2006, 00:56
ты таки маньяк со своим WMI. %-)
← →
Eraser © (2006-10-21 02:24) [13]> [12] Ketmar © (21.10.06 00:58)
как говорится "у кого что.." :) просто недавно столкнулся вплотную с wmi, вот и советую )
← →
Чапаев © (2006-10-21 08:28) [14]> потому как подобную DLL на Delphi написать проблематично.
Писал. Работала.
> ну, разве только advapi32.dll ещё
%-) Вот тут как раз была проблема. При попытке GetUserName() такое начиналось...
← →
Ketmar © (2006-10-21 08:37) [15]>[14] Чапаев(c) 21-Oct-2006, 08:28
>> потому как подобную DLL на Delphi написать проблематично.
>Писал. Работала.
дык это... уровень "начинающих", вообще-то. потому и поясняю так же. я ж не сказал "нельзя". %-)
>> ну, разве только advapi32.dll ещё
>%-) Вот тут как раз была проблема. При попытке GetUserName(
>) такое начиналось...
я её упомянул только из-за работы с реестром. и потому, что системные модуля всё равно её притянут. %-)
← →
Жуков Олег (2006-10-21 15:36) [16]Вот ещё интересный параметр
HKEY_CLASSES_ROOT\exefile\shell\open\command
там по умолчанию "%1" %*. Если поменять %1 на твою программу, то вместо исходного приложения будет запускаться именно она, а путь к исходному приложению может быть параметром.
← →
Ketmar © (2006-10-21 17:30) [17]>[16] Жуков Олег 21-Oct-2006, 15:36
>запускаться именно она, а путь к исходному приложению
>может быть параметром.
только для ShellExecute().
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.048 c