Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Widerspenstigen Prozess beenden (https://www.delphipraxis.net/7372-widerspenstigen-prozess-beenden.html)

Motzi 11. Aug 2003 08:38

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".

Assarbad 11. Aug 2003 12:21

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 ;)

MechMac 11. Aug 2003 16:28

Re: Widerspenstigen Prozess beenden
 
Mal ne ganz blöde Frage: Wie aktiviere ich denn das SeDebugPrivilege ?

Motzi 11. Aug 2003 16:32

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;

Assarbad 11. Aug 2003 17:28

Re: Widerspenstigen Prozess beenden
 
Schreibst du da fuer jedes Privileg ne extra Funktion?

Motzi 11. Aug 2003 17:42

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 16:03 Uhr.
Seite 2 von 2     12   

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