![]() |
Widerspenstigen Prozess beenden
Hallo!
Ich habe bei mir einen Prozess am laufen welchen ich nicht beenden kann. Nicht einmal der Taskmanager von Windows kann den killen. Es wird auch keine Fehlermeldung ausgegeben. Der Prozess läuft unter Win XP über den Benutzernamen: SYSTEM Da ich als Administrator eingeloggt bin hab ich doch eigentlich die Rechte dazu, oder? Kennt zufällig jemand einen Code der mir diesen Prozess beendet? Mfg, MechMac |
Re: Widerspenstigen Prozess beenden
Hi,
wenn sich ein Prozess nicht beenden lässt, dann hat das auch einen Grund. Wenn es aber ein Prozess ist, der nicht Windowseigen ist, dann musst du in den sauren Apfel beißen und rebooten. Wenn da nichts hilft, dann musst du die Datei/den Service löschen/stoppen. Einen Source für Delphi, mit dem du einen Prozess killen kannst, ohne dass du gehindert wirst gibt es nicht. Delphi kann auch nicht mehr als Windows. ;) Chris |
Re: Widerspenstigen Prozess beenden
Scheint ein Dienst zu sein: Start > Systemsteuerung > Verwaltung>Dienste (oder Rechtsklick auf Arbeitsplatz > Computerverwaltung) Aber vorsicht beim beenden von einigen Diensten.
|
Re: Widerspenstigen Prozess beenden
Zitat:
|
Re: Widerspenstigen Prozess beenden
Aber dafür gibt es dann die Wiederherstellungskonsole...
|
Re: Widerspenstigen Prozess beenden
Es ist ja nicht so das dieser Prozess nicht mehr reagiert oder so. Ich kann das dazu gehörige Fenster Maximieren und die Anwendung dann über das "x" beenden. Das will ich aber nicht jedes Mal machen, daher möchte ich das ganze von Delphi aus beenden.
|
Re: Widerspenstigen Prozess beenden
Moin MechMac,
wenn der Benutzer System ist kannst Du getrost davon ausgehen, dass es sich um einen Dienst handelt. System hat höhere Rechte als ein Admin, und deshalb kannst Du den Prozess auch nicht als Admin "abschiessen". @jbg: Zitat:
|
Re: Widerspenstigen Prozess beenden
System IST KEIN PROZESS!!! Es ist eine Art "virtueller" Prozeß, welcher das System symbolisiert. Er ist aber weder zu beenden (auch mit SYSTEM-Rechten nicht) noch kann man diverse seiner Eigenschaften auslesen. (Andere hingegen schon).
Services/Dienste/Daemons kann man als Administrator aus gutem Grunde nicht killen (ACLs). Gleiches gilt für dein Programm unter dem Usernamen SYSTEM! Als ![]() ![]() |
Re: Widerspenstigen Prozess beenden
Moin Assarbad,
Zitat:
Zitat:
Zitat:
|
Re: Widerspenstigen Prozess beenden
@Christian: Hatte es bereits gemerkt und behoben ;) siehe 2. Absatz.
|
Re: Widerspenstigen Prozess beenden
Sofern man über das SeDebugPrivilege verfügt (und es auch aktiviert) kann man auch Services "abschießen". Als Administrator verfügt man zwar über dieses Privilege, allerdings ist es standardmäßig immer deaktiviert. Wenn man das SeDebugPrivilege für den Taskmanager aktivieren würde könnte man auch über diesen diverse Services "abschießen".
|
Re: Widerspenstigen Prozess beenden
Naja, das Debug-Privileg ermöglicht ja auch bspw einfach nen SYSTEM-Prozess zu übernehmen. Soweit ich es verstanden habe bedeutet aktiviertes Debug-Privileg, daß man an alle anderen Rechte rankommen kann. Also Motzi's Methode ist auch machbar.
Aber nochmal: Services sollte man nicht killen! Ich hatte schon Stellen, wo es nötig war um danach das System zumindest sauber runterzufahren ... aber sowas passiert dir wahrscheinlich auch nur, wenn du über mehrere Jahre mehrere Rechner verwalten mußt ;) |
Re: Widerspenstigen Prozess beenden
Mal ne ganz blöde Frage: Wie aktiviere ich denn das SeDebugPrivilege ?
|
Re: Widerspenstigen Prozess beenden
Delphi-Quellcode:
const
SE_DEBUG_NAME = 'SeDebugPrivilege'; procedure EnableDebugPrivilege; var hToken : THandle; tp : TTokenPrivileges; begin if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then begin tp.PrivilegeCount := 1; LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid); tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, False, tp, SizeOf(tp), nil, DWord(nil^)); if GetLastError <> ERROR_SUCCESS then Application.MessageBox('Couldn''t enable Debug-Privilege!', 'No Debug-Privilege', MB_ICONWARNING or MB_OK); CloseHandle(hToken); end; end; |
Re: Widerspenstigen Prozess beenden
Schreibst du da fuer jedes Privileg ne extra Funktion?
|
Re: Widerspenstigen Prozess beenden
Ne, hab das jetzt nur mal so mehr oder weniger 1 zu 1 aus meinem X-Spy rauskopiert (und der braucht eben nur das Debug-Privilege)... ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz