vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Prozesse/Tasks   |   VB-Versionen: VB4, VB5, VB613.01.05
Debugging Privilegien

Setzen von Debugging Privilegien, so dass TerminateProcess fast immer erfolgreich ist

Autor:   Tobias TangemannBewertung:     [ Jetzt bewerten ]Views:  13.150 
ohne HomepageSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Mit den beiden Tipps  Einen Prozess beenden und der API-Funktion  CreateToolhelp32Snapshot lässt sich sehr bequem ein Programm entwickeln, das alle ungewünschten Programme schnell beendet. Einige Prozesse weigern sich ab WinNT jedoch mit TerminateProcess beendet zu werden. Damit auch diese hartnäckigen Prozesse beendet werden können, muss das Programm Debugging Privilegien besitzen. Das hilft bei fast allen Prozessen, die sich weigern, beendet zu werden. Einige lassen sich aber trotzdem nicht beenden, so z.B ZoneAlarm, das sich berechtigterweise vor dieser Methode schützt oder System-Prozesse wie z.B smss.exe. Zum Setzen von DebugingPrivilegien verwendet man einfach folgende Methode, die einfach in ein Modul kopiert werden kann:

Option Explicit
 
' Konstanten
Private Const SE_DEBUG_NAME = "SeDebugPrivilege"
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const ANYSIZE_ARRAY = 1
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
 
' Typen
Private Type LUID
  LowPart As Long
  HighPart As Long
End Type
 
Private Type LUID_AND_ATTRIBUTES
  pLuid As LUID
  Attributes As Long
End Type
 
Private Type TOKEN_PRIVILEGES
  PrivilegeCount As Long
  Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
 
Private Type LARGE_INTEGER
  LowPart As Long
  HighPart As Long
End Type
 
' API's
Private Declare Function OpenProcessToken Lib "advapi32.dll" ( _
  ByVal ProcessHandle As Long, _
  ByVal DesiredAccess As Long, _
  TokenHandle As Long) As Long
 
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" _
  Alias "LookupPrivilegeValueA" ( _
  ByVal lpSystemName As String, _
  ByVal lpName As String, _
  lpLuid As LARGE_INTEGER) As Long
 
Private Declare Function AdjustTokenPrivileges Lib "advapi32" ( _
  ByVal TokenHandle As Long, _
  ByVal DisableAllPrivileges As Long, _
  ByRef NewState As TOKEN_PRIVILEGES, _
  ByVal BufferLength As Long, _
  ByRef PreviousState As Any, _
  ByRef ReturnLength As Any) As Long
 
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Function EnableDebugPrivNT() As Boolean
  Dim hToken As Long
  Dim DebugValue1 As LARGE_INTEGER
  Dim DebugValue2 As LUID
  Dim tkp As TOKEN_PRIVILEGES
  Dim lResult As Long
 
  ' Handle des AccessToken ermitteln
  lResult = OpenProcessToken(GetCurrentProcess, _
    TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
 
  If lResult = 0 Then
    EnableDebugPrivNT = False
    Exit Function
  End If
 
  ' Debuging Privilegien setzen
  lResult = LookupPrivilegeValue("", SE_DEBUG_NAME, DebugValue1)
 
  If lResult = 0 Then
    EnableDebugPrivNT = False
    Exit Function
  End If
 
  DebugValue2.HighPart = DebugValue1.HighPart
  DebugValue2.LowPart = DebugValue1.LowPart
 
 
  tkp.PrivilegeCount = 1
  tkp.Privileges(0).pLuid = DebugValue2
  tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
 
  ' Debuging Privilegien aktivieren
  lResult = AdjustTokenPrivileges(hToken, False, tkp, 0, ByVal 0&, 0)
 
  If lResult = 0 Then
    EnableDebugPrivNT = False
    Exit Function
  End If
 
  EnableDebugPrivNT = True
End Function

Dieser Tipp wurde bereits 13.150 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel