Убийство процесса по имени
Сегодня будем грамотно убивать процесс зная его имя.
Наш киллер справится с любыми процессами, даже с теми, что неподвластны Windows Task Manager
PROCESSENTRY32 structure - Описывает структуру списка процессов, находящихся в адресном пространстве системы в момент снимка.
MSDN утверждает, что объекты такой структуры необходимо инициализировать размером самой структуры.
Спорить не будем.
CreateToolhelp32Snapshot - Возвращает моментальный снимок данных текущих модулей, процессов, потоков и принадлежащих им куч памяти
lstrcmpi - посимвольно сравнивает 2 строки, пока не будет обнаружено неравенство, либо концевой нулевой символ "\0"
Результат:
меньше нуля: str1 < str2
ноль: str1 = str2
больше нуля: str1 > str2
Process32First - Извлекает информацию о первом процессе снимка, полученного посредством CreateToolhelp32Snapshot
Process32Next - Соответственно извлекает информацию о следующем процессе
OpenProcess - открывает существующий объект процесса, устанавливая указанный уровень доступа.
TerminateProcess - завершает работу заданного процесса и всех его потоков.
Переходим к практике!
Алгоритм убийства следующий:
1) Получить информацию о всех текущих процессах
2) Поочередно сравнивая все имена процессов с нашим, найти его идетификатор
3) Открыть процесс с максимально возможными правами
4) Критическое завершение процесса с флагом 0xDEAD
Приступим!
Пишем фукнцию GetPIDByName:
Получать идентификатор процесса умеем, ну что, учимся убивать?
Ну и сам вызов:
Ладно, хватит мучать мою систему, я уже все, что можно убил :D