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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2011, 10:34   #1
WestSide
 
Регистрация: 09.01.2011
Сообщений: 8
По умолчанию Процессы

И здравствуйте снова! Пишу "мини" антивирус для удаление Optima DarkNess (7a,7g,7h,6m,5*), я знаю где находится билд, но в системе он висит как svchost.exe (7a) или winlogon.exe (6m) закрыть по имени процесса врядли удастся, надо как то иначе, собственно как замочить козла? буду благодарен любой информации.

Последний раз редактировалось WestSide; 18.01.2011 в 14:25.
WestSide вне форума Ответить с цитированием
Старый 18.01.2011, 15:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
закрыть по имени процесса врядли удастся
Откуда такая уверенность?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.01.2011, 16:14   #3
WestSide
 
Регистрация: 09.01.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Откуда такая уверенность?
Пробовал уже, процесс имитирует winlogon.exe, висит от системы, даже при завершении говорит что сис процесс и завершать нельзя, но через HideToolze закрывается без проблем.

пробовал так:
Код:
function KillTask(ExeFileName:string):integer;
const
PROCESS_TERMINATE=$0001;
var
Co:BOOL;
FS:THandle;
FP:TProcessEntry32;
begin
result:=0;
FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FP.dwSize:=Sizeof(FP);
Co:=Process32First(FS,FP);
while integer(Co) <> 0 do
begin
if ((UpperCase(ExtractFileName(FP.szExeFile))=UpperCase(ExeFileName)) or
(UpperCase(FP.szExeFile)=UpperCase(ExeFileName))) then
Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
FP.th32ProcessID),0));
Co:=Process32Next(FS,FP);
end;
CloseHandle(FS);
end;
результата 0

Последний раз редактировалось WestSide; 18.01.2011 в 16:21.
WestSide вне форума Ответить с цитированием
Старый 22.01.2011, 13:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
результата 0
Всмысле тебе функция такой результ возвращает? Какой код и текст ошибки?
Ану выполни
Код:
if KillTask=0 then RaiseLastWin32Error;
И поглянь чего оно напишет

И кстати я бы переписал
Код:
...
 h:=OpenProcess(PROCESS_TERMINATE, BOOL(0),FP.th32ProcessID);
 if h=0 then RaiseLastWin32Error
 else begin
  Result:=TerminateProcess(h,0);
  if not Result then RaiseLastWin32Error;
 end;
...
И сделал бы возврат функции не целым а Boolean.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процессы Bat{CMD}_Men Win Api 5 03.10.2009 12:27
::Процессы:: doniyor Общие вопросы Delphi 5 07.01.2009 09:16
процессы lelik3000 Win Api 2 23.10.2008 09:04
Процессы в С# Спартак Общие вопросы .NET 4 10.07.2008 12:33
Процессы student_63 Win Api 4 13.04.2008 11:46