Здравствуйте, уважаемые.
Суть вопроса в следующем:
Пишу простенький диспетчер задач, с функцией вывода информации о процессе(производитель экзешника, путь к файлу) и с функцией убийства процесса.
Думаю, многие из вас сталкивались с ситуацией, когда вредоносными программами(Вирусами) отключался регэдит и диспетчер задач.
Есть PID процесса, есть функция, убивающая процесс.
Процесс можно убить почти любой.(не получалось убить только avp.exe - каспер)
Но, это при запуске программы из-под компилятора.(кнопка F9 - Run)
Если скомпилировать, и запустить - то некоторые процессы убить не получается. Подозреваю, что отказано в доступе.
error code: 6
Если запускать из компилятора - то функцией возвращается 0 код и процесс убит.
Антивирус не при чем.
Функция:
Код:
function KillProcess(PID: Integer): Integer;
var
PH, EC: Cardinal;
begin
Result:= 0;
PH:= OpenProcess(PROCESS_ALL_ACCESS, True, PID);
GetExitCodeProcess(PH, EC);
if (PH = 0) then
Result:= GetLastError
else begin
if not TerminateProcess(PH, EC) then
Result:= GetLastError;
CloseHandle(PH);
end;
end;
Вопросы:
1) Коим образом можно извлечь информацию о производителе?(майкрософт, адоб, и.т.п.) // Это не столь важно
2) Коим образом можно получить необходимый доступ к процессу, не зависимо от компилятора?