Einzelnen Beitrag anzeigen

Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#1

Prozess wird nicht gekillt

  Alt 14. Nov 2006, 14:51
Delphi-Quellcode:
uses TLHelp32;

function IsExeRunning(const AExeName: string): boolean;
var
  h: THandle;
  p: TProcessEntry32;
begin
  Result := False;

  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    Process32First(h, p);
    repeat
      Result := AnsiUpperCase(AExeName) = AnsiUpperCase(p.szExeFile);
    until Result or (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;

function KillTask(const AExeName: string): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat
        if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
          Result := TerminateProcess(OpenProcess(Process_Terminate,
                                                 false,
                                                 p.th32ProcessID),
                                     0);
      until (not Process32Next(h, p)) or Result;
  finally
    CloseHandle(h);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 while isexerunning('myProgram.exe') do KillTask('myProgram.exe');
end;
dieser code funktioniert, wenn myProgram.exe mit dem gleichen benutzer angemeldet ist, als der derzeitige windows benutzer.
wenn dieses myProgramm.exe allerdings als service (oder durch einen service0 oder mit administratorrechten gestartet ist, und das Programm, was dieses Peroigramm killen soll auch als Administrrator, passiert nichts, ausser das die auslastung des prozessors auf 100% schiesst.
woran kann das liegen?
vlees91
  Mit Zitat antworten Zitat