UNICODE_STRING GetFullProcessName(HANDLE PID) { PEPROCESS proc; PSECTION Section; PSEGMENT Segment; PCONTROL_AREA ControlArea; PFILE_OBJECT FileObject; PsLookupProcessByProcessId(PID,&proc); if(proc->SectionObject) { Section = proc->SectionObject; Segment = Section->Segment; ControlArea = Segment->ControlArea; FileObject = ControlArea->FilePointer; } return FileObject->FileName; ObDereferenceObject((PVOID)proc); } Терминейт делаешь с помощью : NtOpenProcess + NtTerminateProcess