Форум: "Прочее";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
ВнизКак отловить информацию о запускаемых программах? Найти похожие ветки
← →
И. Павел © (2011-05-01 13:34) [0]Здравствуйте.
Я хочу получать информацию обо всех запускаемых приложениях на своем компьютере.
Конечно, можно просто просматривать список процессов, но тогда его нужно будет обновлять раз в 1 сек или чаще (бывают же и короткие процессы).
Подскажите, пожалуйста, можно ли определить запуск процесса каким-то другим способом? Например, идеальным вариантом была бы возможность объявить как-нибудь callback функцию, которую система вызывала бы при запуске нового процесса/приложения.
PS: программы могут не иметь окон, т.е. быть консольными.
Заранее спасибо.
← →
oldman © (2011-05-01 13:48) [1]
> Я хочу получать информацию обо всех запускаемых приложениях
> на своем компьютере.
> Подскажите, пожалуйста, можно ли определить запуск процесса
> каким-то другим способом?
Так приложение или процесс???
← →
clickmaker © (2011-05-01 13:50) [2]HKEY_CLASSES_ROOT\exefile\shell\open\command ?
← →
И. Павел © (2011-05-01 14:02) [3]
> oldman © (01.05.11 13:48) [1]
Хочу сделать такую возможность и для приложений и для процессов.
В первую очередь - для приложений (т.к. список процессов сложно просматривать и анализировать - один хром там 10 процессов создает при одной открытой странице). Но и для процессов это было бы тоже полезно.
← →
И. Павел © (2011-05-01 14:37) [4]
> clickmaker © (01.05.11 13:50) [2]
Большое спасибо. Я написал в реестре для параметра по умолчанию и IsolatedCommand значение C:\starter\starter.exe "%1" %* . Программа starter выглядит так:program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
var i: integer;
s: string;
begin
Writeln("Started: " + ParamStr(1));
s := "";
for i := 1 to ParamCount do
begin
if i > 1 then s := s + " ";
s := s + """ + ParamStr(i) + """;
end;
WinExec(PAnsiChar(s), SW_SHOWNORMAL);
Readln;
end.
Подскажите, пожалуйста, не допустил ли я где-нибудь ошибку? Потому что, насколько я понимаю, это достаточно серьезное изменение в системе, а моя программа должна просто отслеживать запуск новых приложений и не мешать другим программам.
Но если программа запускается неявно, а просто ассоциируется с открываемым ресурсом, то starter игнорируется.
Подскажите, пожалуйста, как заставить проходить через starter.exe еще и программы, запускающиеся после "запуска" ресурсов, связанных с этими программами? Т.е. как, например заставить mediaplayer пройти отметиться в starter после того, как я открою файл clock.avi?
← →
clickmaker © (2011-05-01 14:39) [5]универсальное решение, скорей всего, только либо в перехвате CreateProcess либо в установке хука - PsSetCreateProcessNotifyRoutine
← →
В школу (2011-05-01 16:37) [6]audit
← →
И. Павел © (2011-05-01 18:58) [7]
> clickmaker © (01.05.11 14:39) [5]
Спасибо. Но все это, насколько я понял "тяжелая артиллерия", направленная на идентификацию процесса и его останов при необходимости. Отлов CreateProcess (кое-где вообще встречал упоминания, что при создании процесса и Createprocess может не вызываться...) производится либо через иньекцию в системную dll, либо через редактирование импорта всех процессов (думаю, тут придется еще и касперского усмирять :). А PsSetCreateProcessNotifyRoutine требует написание драйвера, с чем я еще не сталкивался. У меня скорее любительская задача и не требуется реагировать на вызов API моментально, т.е. не антивирус и не вирус.
> В школу (01.05.11 16:37) [6]
> audit
А что такое audit?
Мне нужно просто предоставлять пользователю отчет о том, что запускалось в определенный день. Подскажите, пожалуйста, может быть windows где-нибудь сама хранит статистику запущенных программ? Т.е. можно ли, к примеру, узнать, какие программы были запущены 10.2.2010?
← →
clickmaker © (2011-05-01 19:12) [8]> А что такое audit?
http://technet.microsoft.com/en-us/library/cc775520(WS.10).aspx
← →
И. Павел © (2011-05-01 19:52) [9]
> clickmaker ©, В школу
Большое спасибо! То что нужно!
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c