Консультация № 142089
24.08.2008, 11:12
0.00 руб.
0 5 1
Здравствуйте уважаемые эксперты!
Изваял небольшое консольное приложение, которое убивает процессы стандартных Виндовских игр. Товарищам по работе в подарок...
Но они теперь делают просто, открывают диспетчер задач и вручную убивают мой процесс WinMonitor. Подскажите пожалуйста, как сделать мой процесс неубиваемым. Заранее спасибо.

Приложение:
program WinMonitor;
uses
Windows, ShellAPI, Messages, Tlhelp32, SysUtils, Registry,
Dialogs, ToolWin;

const
ClassName = 'MyResident'; { Имя класса }

var
mywnd: hWnd; { Окно программы }

procedure Run(App: string); {Запуск любого приложения}
var
PMSI: TStartupInfo;
PMPI: TProcessInformation;
begin
FillChar( PMSI, SizeOf( PMSI ) , 0 );
with PMSI do
begin
cb := SizeOf(PMSI);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
CreateProcess(nil, @App[1], nil, nil, False, Create_default_error_mode,
nil, nil, PMSI, PMPI);
Waitforsingleobject(PMPI.hProcess, infinite);
end;

{проверка запущенных приложений}
function IsRunning(sName: string): boolean;
var
han: THandle;
ProcStruct: PROCESSENTRY32; // из

Обсуждение

Неизвестный
24.08.2008, 12:24
общий
Напишите приложение, которое периодически проверяет наличие Вашего в памяти. Если нет, то запускает или еще лучше генерирует исходник и запускает.
Неизвестный
24.08.2008, 18:50
общий
Или лучше проверять не запущен ли диспетчер задач прямо в вашем приложении (как я понимаю, оно отслеживает все запущенные приложения). И после запуска диспечера задач завершать его как и игру:) Только напишите программу-завершатель вашей, иначе сами не сможете воспользоваться диспетчером:)
Неизвестный
25.08.2008, 06:16
общий
Цитата: Boriss
Напишите приложение, которое периодически проверяет наличие Вашего в памяти. Если нет, то запускает или еще лучше генерирует исходник и запускает.


и еще одно, проверяющее то, которое проверяет это которое смотрит за теми.

Может, проще "скрыть" свою задачу? или, запускать её от админа? (я надеюсь пользователь в вашей сети не работает с правами администратора? )

Неизвестный
25.08.2008, 06:51
общий
это ответ
Здравствуйте, Храмцов Александр Анатольевич!

1. Можно просто стартовать свою задачу так - ShowWindow(Application.Handle,SW_Hide) как приложение оно не будет видно, но в списках задач будет видно, имя можно дать "похожее" на системное Windows.
2. Можно запустить в качестве службы от имени системы
3. можно подумать над этим: URL >> Перехват API функций в Windows NT

Вариантов много, но все они сводятся к трем - спрятать, не дать право на завершение, перехват события завершения
Неизвестный
26.08.2008, 11:52
общий
To Пырлик
У "них" явно одинаковые права, и они осревнуются. Найти приложение, удаляющее Ваше не так-то сложно, а вот генерирующее программу ...
Форма ответа