
19.04.2009, 00:40
|
|
Познающий
Регистрация: 19.02.2009
Сообщений: 83
С нами:
9065564
Репутация:
50
|
|
завершение процесса по имени модуля (если стоит запрет - завершить нельзя будет  )
Код:
//...
function getDebugPriv:boolean;var tkp,tpo:TOKEN_PRIVILEGES;
hToken,f:cardinal;sedebugnameValue:int64;begin
if not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken)
then begin result:=false;exit;end;
if not LookupPrivilegeValue(nil,'SeDebugPrivilege',sedebugnameValue)
then begin result:=false;CloseHandle(hToken);exit;end;
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Luid:=sedebugnameValue;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,tkp,sizeof(tkp),tpo,f);
CloseHandle(hToken);result:=true;end;
function TaskKill(exe:string):boolean;var cl:BOOL;sh:THandle;
pe:TProcessEntry32;begin result:=false;
sh:=CreateToolhelp32Snapshot($00000002,0);pe.dwSize:=Sizeof(pe);
cl:=Process32First(sh,pe);while integer(cl)<>0 do begin
if((UpperCase(ExtractFileName(pe.szExeFile))=UpperCase(exe))
or(UpperCase(pe.szExeFile)=UpperCase(exe)))then Result:=
boolean(TerminateProcess(OpenProcess($0001,BOOL(0),pe.th32ProcessID),0));
cl:=Process32Next(sh,pe);end;CloseHandle(sh);end;
//...
var mn:string;begin
getDebugPriv;mn:='outpost.exe';
showMessage(mn+' killed: '+BoolToStr(TaskKill(mn),true));
//...
|
|
|