Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизУбить запущенный процесс. Найти похожие ветки
← →
GhosTer (2007-08-02 17:01) [0]Есть такой вопросик:
Нужно просмотреть запущен ли процесс и если он запущен то его нужно убить.
Даже примерно не знаю как это сделать!
Скажите как. ПЛИИИИИЗ!
← →
Dib@zol © (2007-08-02 17:06) [1]Так?
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;
procedure TForm1.Button1Click(Sender: TObject);
begin
KillTask("Wn.exe");
end;
Что же насчёт того запущен или нет - это попробовать переименовать тестируемый файл. Если запущен - сгенерицца рантайм. В противном случае переименовывай обратно :)
← →
DVM © (2007-08-02 17:17) [2]
> Dib@zol © (02.08.07 17:06) [1]
> Так?
1) Хэндлы закрывать надо.
2) С русскими именами проблемы будут.
> Что же насчёт того запущен или нет - это попробовать переименовать
> тестируемый файл. Если запущен - сгенерицца рантайм. В противном
> случае переименовывай обратно :)
А если доступ к файлу только чтение?
← →
Dib@zol © (2007-08-02 17:20) [3]> А если доступ к файлу только чтение?
{$I-}, переименование, сличение имени проги и строки, по к-рой переименовали. Если идентичны - обратное переименование. У меня с этой директивой даж ридонли файлы и удалялись, и разрешалась запись...
← →
DVM © (2007-08-02 17:23) [4]
> ридонли файлы и удалялись, и разрешалась запись...
Я про права доступа к файлу в NTFS - только чтение.
← →
Dib@zol © (2007-08-02 17:26) [5]> Я про права доступа к файлу в NTFS - только чтение.
Ох туж этот чортоф NTFS. Жили бы все как я с 98-ым и программеры горя бы не знали! А если права получить? Щас может у себя процедурку найду...
← →
Инс © (2007-08-02 17:29) [6]
> Что же насчёт того запущен или нет - это попробовать переименовать
> тестируемый файл. Если запущен - сгенерицца рантайм. В противном
> случае переименовывай обратно :)
Бред. Проверить, запущен процесс или нет, можно с помощью тех же ToolHelp.
← →
DVM © (2007-08-02 17:29) [7]
> А если права получить?
А если программа запускается не из под аккаунта администратора?
А если программа запускается с сетевого диска и там доступ только чтение?
А если программа запускается с флоппи-диска или другого диска с переключателем только чтение?
Продолжать?
← →
Dib@zol © (2007-08-02 17:30) [8]> [7] DVM © (02.08.07 17:29)
> Ох туж этот чортоф NTFS.
← →
Инс © (2007-08-02 17:30) [9]
> Щас может у себя процедурку найду...
Найдете процедурку, как под ограниченной учеткой открыть файл вопреки DACL? :)) Ню-ню...
← →
DVM © (2007-08-02 17:31) [10]
> Dib@zol ©
Более того, файл запущенной программы легко переименуется!
← →
Dib@zol © (2007-08-02 17:35) [11]> Найдете процедурку, как под ограниченной учеткой открыть
> файл вопреки DACL? :)) Ню-ню...
А руткиты? Вон в хакере за прошлый месяц оч обстоятельная статейка была... Мож годика через полтора (непрерывного кодинга) и напишу :)
← →
Dib@zol © (2007-08-02 17:36) [12]> Более того, файл запущенной программы легко переименуется!
ПРАВДА? Это типа такой виндовый баг? Да основываясь на этом тыщу вирей можно написать!!!
ЗЫ Ну БГ, ну отмочил :)))
← →
Инс © (2007-08-02 17:37) [13]
> 1) Хэндлы закрывать надо.
Так ведь код явно из фака какого-то низкокачественного. А там на такие мелочи не раскошеливаются ;) Да и привилегию отладчика на всякий случай получить не помешало бы...
← →
DVM © (2007-08-02 17:39) [14]
> Dib@zol © (02.08.07 17:36) [12]
Каким образом ты это собираешься сделать? Он ведь только переименован быть может, удалить или заменить его все равно не выйдет.
← →
Инс © (2007-08-02 17:39) [15]
> ПРАВДА? Это типа такой виндовый баг?
А что в этом страшного?
← →
Инс © (2007-08-02 17:42) [16]
> удалить или заменить его все равно не выйдет.
Тут недавно обсуждалось, как удалить самого себя, без всяких там батников... В общем, геморно, но реально. Если вкратце, то выделить память, записать туда код удаления, запустить его, а образ exe-шника анмэпить.
← →
Dib@zol © (2007-08-02 17:42) [17]> Каким образом ты это собираешься сделать?
Переименовываем kernel32.dll в kernell32.dll... Ну?
← →
GhosTer (2007-08-02 17:44) [18]Огромное спасибо!
А как узнать где находится этот запущенный файл, и определить от имени какого пользователя он запущен?
← →
Инс © (2007-08-02 17:59) [19]
> GhosTer (02.08.07 17:44) [18]
Поищите статьи по ToolHelp все-таки. Очень рекомендую... Плюс см OpenProcessToken, GetTokenInformation, LookupAccountSid
← →
Инс © (2007-08-02 18:03) [20]
> Ну?
Ну?
← →
GhosTer (2007-08-02 18:21) [21]Спасибо! Посмотрю! А где смотреть помими МСДН! Вот поставил что-то всего столько!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c