Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozess unter WinNT killen. (https://www.delphipraxis.net/54756-prozess-unter-winnt-killen.html)

freakfly 11. Okt 2005 09:52


Prozess unter WinNT killen.
 
Hallo!

Ich möchte mit meinem Delphi Programm einen Prozess unter Windows NT killen.
Eigentlich müsste das ja mit TerminateProcess gehen, oder?
Ich habe jedenfalls folgendes probiert:
Delphi-Quellcode:
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PID);
Und den Handle des Prozesses zu bekommen. Danach müsste ich es ja eigentlich mit demselben schließen können:
Delphi-Quellcode:
res := terminateprocess(hProcess, 0);
Das Funktioniert aber leider nicht. Kann mir jemand weiterhelfen? Das Programm muss unter WinNT lauffähig sein, daher bringen mir Tipps zu WinXP wenig (mal ganz abgesehen davon, das es da auch jede Menge im Netz gibt :-D).

Gruß, freak

supermuckl 11. Okt 2005 10:10

Re: Prozess unter WinNT killen.
 
ähm wie wärs mit der DP suche ?
da gibts echt viele beispiele wie das geht

freakfly 11. Okt 2005 10:15

Re: Prozess unter WinNT killen.
 
Wie ich auch schon oben geschrieben habe gibt es massig Beispiele wie es unter Windows XP/2k/ME funktioniert. Aber allem Anschein nach funktionieren diese nicht unter Windows NT. Jedoch lasse ich mich gerne eines Besseren belehren.

LoRd-MuldeR 11. Okt 2005 12:00

Re: Prozess unter WinNT killen.
 
Zitat:

Zitat von freakfly
Delphi-Quellcode:
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PID);
res := terminateprocess(hProcess, 0);

Hi,

Du hast vergessen dir das PROCESS_TERMINATE Recht für deinen Handle zu holen.
Eventuell brauchst du PROCESS_QUERY_INFORMATION und PROCESS_VM_READ sogar gar nich mal...

Versuchs mal damit:

Delphi-Quellcode:
 hProcess := OpenProcess(PPROCESS_TERMINATE or ROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PID);
res := terminateprocess(hProcess, 0);
Gruß MuldeR

Olli 11. Okt 2005 12:05

Re: Prozess unter WinNT killen.
 
Unter bestimmten Umständen braucht man mglw. noch das Debugrecht. Normalerweise aber nur von einem unterprivilegierten Account aus ;)

freakfly 12. Okt 2005 07:19

Re: Prozess unter WinNT killen.
 
Danke für eure Antworten!

Zitat:

Du hast vergessen dir das PROCESS_TERMINATE Recht für deinen Handle zu holen.
Eventuell brauchst du PROCESS_QUERY_INFORMATION und PROCESS_VM_READ sogar gar nich mal...
Am nichtvorhandenen PROCESS_TERMINATE lags! Irgendwie hatte ich mir die Beschreibung vom MSDN zu TerminateProcess durchgelesen und rausgedruckt und da steht auch drin
"The handle must have the PROCESS_TERMINATE access right."
Aber vor lauter Bäumen sieht man manchmal den Wald nichtmehr :gruebel: !
Deshalb vielen Dank! :thumb:

Gruß, Benny

@Olli: Unterprivilegiert ist der Account zum Glück nicht... (Ein Problem weniger ;-))


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz