Seite 2 von 3

Re: Der gute alte Taskmanager

Verfasst: 08.05.2010 12:39
von Josh
na dann viel spass beim erstellen deiner virenschleuder. es hat schon seinen grund, warum der taskmanager gut abgesichert ist und wer da rumwerken will, der hat auf jeden fall nichts gutes vor. da brauchst du gar nichts von unterstellungen zu schreiben.

Re: Der gute alte Taskmanager

Verfasst: 08.05.2010 15:31
von deify
Josh hat geschrieben:der hat auf jeden fall nichts gutes vor.
sry... ist das dein ernst? nur weil ich versuche den taskmanager zu deaktivieren bin ich kriminell? versuche ich viren zu schreiben? ... schau dir bitte mal den thread an: http://www.forums.purebasic.com/german/ ... 11&t=11844

sieht das kriminell aus? ist das ein virus?

sry dass ich es nachbauen wollte, da der download nichtmehr funktioniert... ich bin ja dankbar für konstruktive kritik aber so ein paranoides rumgetue brauche ich nicht ); danke.

ob ihr mir helft oder nicht ist ja ganz allein euere sache und wenn ihr das nicht wollt, schön :) dann sagts einfach so... aber stempelt mich nicht als "script-kiddie" oder sonstiges ab

PS: meinetwegen könnt ihr den thread gerne schließen ^^ ist vielleicht besser so...
hier der code des "virus" falls ihr ihn überprüfen wollt :

Code: Alles auswählen


Enumeration
  #DiskNr
  #List_partition
  #Check_USB
  #Button
EndEnumeration

Enumeration
  #Menu
EndEnumeration

Enumeration
  #Menu_Refresh
  #Menu_Minimize
  #Menu_Exit
EndEnumeration

IncludeFile "COMate.pbi"

Structure PartitionInfo
 
  Partition.s
  DriveLetter.s
  FileSystem.s
  FreeSpace.s
  Size.s
  VolumeName.s
  VolumeSerialNumber.s
  Bootable.l
  BootPartition.l
  PrimaryPartition.l
  Type.s
         
EndStructure

Structure DiskInfo
  DiskNr.s
  PartNr.PartitionInfo
  DeviceID.s
  PNPDeviceID.s
  FirmwareRevision.s
  InterfaceType.s
  MediaType.s
  Model.s
  Status.s
  Name.s
EndStructure

Global NewList info.DiskInfo(),Laufwerk.s, Exit = #False,master.s = "",currentid.s = ""
OpenFile(0,GetHomeDirectory()+"\Desktop\usb.log")

Procedure Partition_To_DiskDrive(devID.s)
 
  Define.COMateObject objWMIService, USBCfg,EnumUSB
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
    EnumUSBset.COMateEnumObject
    x=0
    EnumUSBset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDrive Where DeviceID= $0027" + devID +"$0027')")
    If EnumUSBset
      EnumUSB = EnumUSBset\GetNextObject()
      While EnumUSB
        If EnumUSB
          info()\FirmwareRevision=EnumUSB\GetstringProperty("FirmwareRevision")
          info()\InterfaceType=EnumUSB\GetstringProperty("InterfaceType")
          info()\MediaType=EnumUSB\GetstringProperty("MediaType")
          info()\Model=EnumUSB\GetstringProperty("Model")
          info()\PNPDeviceID=EnumUSB\GetstringProperty("PNPDeviceID")
          info()\Status=EnumUSB\GetstringProperty("Status")
          EnumUSB\Release()
          x=x+1
        EndIf
        EnumUSB = EnumUSBset\GetNextObject()
      Wend
      EnumUSBset\Release()
    EndIf
    objWMIService\Release()
  EndIf
   
EndProcedure   

Procedure Win32_DiskDrivePhysicalMedia()

  Define.COMateObject objWMIService, EnumDiskDrive
  EnumDiskDriveset.COMateEnumObject
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
   
    x=0
    EnumDiskDriveset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDrivePhysicalMedia')")
    If EnumDiskDriveset
     EnumDiskDrive = EnumDiskDriveset\GetNextObject()
     While EnumDiskDrive
        If EnumDiskDrive
          physdrive.l=FindString(EnumDiskDrive\GetstringProperty("Antecedent"),"\\\\.\\PHYSICALDRIVE",1)
          If physdrive
            diskpart.s=RemoveString(Mid(EnumDiskDrive\GetstringProperty("Antecedent"),physdrive,Len("\\\\.\\PHYSICALDRIVE")+2),Chr(34))
            Partition_To_DiskDrive(diskpart)
          EndIf
        EndIf
        EnumDiskDrive = EnumDiskDriveset\GetNextObject()
      Wend
      EnumDiskDriveset\Release()
    EndIf
    objWMIService\Release()
  EndIf

EndProcedure

Procedure.s Diskpartition(diskpart.s)

  found.l= FindString(diskpart,Chr(34),1)
  ProcedureReturn  Mid(diskpart,found,Len(diskpart)-found+1)
 
EndProcedure

Procedure LogicalDiskToPartition(antecedent.s)

  Define.COMateObject objWMIService, EnumLDisk
  EnumLDiskset.COMateEnumObject
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
    x=0
    antecedent=ReplaceString(antecedent, "\", "\\")
    EnumLDiskset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_LogicalDiskToPartition Where Antecedent= $0027" + antecedent +"$0027')")
    If EnumLDiskset
      EnumLDisk = EnumLDiskset\GetNextObject()
      While EnumLDisk
        If EnumLDisk
          driveletter.s=EnumLDisk\GetstringProperty("Dependent")
          info()\PartNr\DriveLetter=RemoveString(diskpartition(driveletter),Chr(34))
          EnumLDisk\Release()
        EndIf
        EnumLDisk = EnumLDiskset\GetNextObject()
      Wend
      EnumLDiskset\Release()
    EndIf
    objWMIService\Release()
  EndIf

EndProcedure

Procedure Win32_DiskDriveToDiskPartition()

  Define.COMateObject objWMIService, EnumDisk
  EnumDiskset.COMateEnumObject
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
    x=0
    EnumDiskset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDriveToDiskPartition')"); Where DeviceID= $0027" + devID +"$0027')")
    If EnumDiskset
      EnumDisk = EnumDiskset\GetNextObject()
      While EnumDisk
        If EnumDisk
          AddElement(Info())
          diskpart.s=  EnumDisk\GetstringProperty("Dependent")
          LogicalDiskToPartition(diskpart)
          diskpartition(diskpart)
          For xx=1 To CountString(diskpartition(diskpart),",")+1
            Ergebnis$ = StringField(diskpartition(diskpart), xx, ",")
            Ergebnis$= RemoveString(Ergebnis$,Chr(34))
            If xx=1
              Info()\DiskNr=Ergebnis$
              If tmp$<>Ergebnis$
                tmp$=Ergebnis$
                diskNr.s=RemoveString(tmp$,"Disk #")
              EndIf
              y=x
            Else
              Info()\PartNr\Partition=Ergebnis$
              y=x
              x=x+1
            EndIf     
          Next
          physdrive.l=FindString(EnumDisk\GetstringProperty("Antecedent"),"\\\\.\\PHYSICALDRIVE",1)
          If physdrive
            diskpart.s=RemoveString(Mid(EnumDisk\GetstringProperty("Antecedent"),physdrive,Len("\\\\.\\PHYSICALDRIVE")+2),Chr(34))
            If tmpdisk$<>diskpart
              tmpdisk$=diskpart
              Info()\DeviceID=EnumDisk\GetstringProperty("Antecedent")
              Partition_To_DiskDrive(diskpart)
            EndIf
          EndIf
        EndIf
        EnumDisk = EnumDiskset\GetNextObject()
      Wend
      EnumDiskset\Release()
    EndIf
    objWMIService\Release()
  EndIf

EndProcedure

Procedure Win32_DiskPartition(DeviceID.s)


  Define.COMateObject objWMIService, EnumPart
  EnumPartset.COMateEnumObject
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
    x=0
    EnumPartset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskPartition Where DeviceID= $0027" + DeviceID +"$0027')")
    If EnumPartset
      EnumPart = EnumPartset\GetNextObject()
      While EnumPart
        If EnumPart
          Info()\PartNr\Bootable=EnumPart\GetIntegerProperty("Bootable")
          Info()\PartNr\BootPartition=EnumPart\GetIntegerProperty("BootPartition")
          Info()\PartNr\PrimaryPartition=EnumPart\GetIntegerProperty("PrimaryPartition")
          Info()\PartNr\Type=EnumPart\GetstringProperty("Type")
        EndIf
        EnumPart = EnumPartset\GetNextObject()
      Wend
      EnumPartset\Release()
    EndIf
    objWMIService\Release()
  EndIf

EndProcedure

Procedure.s DiskSpace(strval.s)
 
  Protected lpTotalNumberOfBytes.q, res.f, CapStr.s
 
  lpTotalNumberOfBytes=ValQ(strval.s)
  res=  lpTotalNumberOfBytes/(1024*1024*1024)
  CapStr= StrD(res,2)
  ProcedureReturn CapStr

EndProcedure

Procedure Win32_LogicalDisk(Driveletter.s)

  Define.COMateObject objWMIService, EnumDrive
  EnumDriveset.COMateEnumObject
  strComputer.s = "."
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
  If objWMIService
    x=0
    EnumDriveset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_LogicalDisk Where Caption= $0027" + Driveletter +"$0027')")
    If EnumDriveset
      EnumDrive = EnumDriveset\GetNextObject()
      While EnumDrive
        If EnumDrive
          Info()\PartNr\FileSystem=EnumDrive\GetstringProperty("FileSystem")
          Info()\PartNr\FreeSpace=DiskSpace(EnumDrive\GetstringProperty("FreeSpace"))
          Info()\PartNr\Size=DiskSpace(EnumDrive\GetstringProperty("Size"))
          Info()\PartNr\VolumeName=EnumDrive\GetstringProperty("VolumeName")
          Info()\PartNr\VolumeSerialNumber= EnumDrive\GetstringProperty("VolumeSerialNumber")
        EndIf
        EnumDrive = EnumDriveset\GetNextObject()
      Wend
      EnumDriveset\Release()
    EndIf
    objWMIService\Release()
  EndIf

EndProcedure

Procedure listFilesByLetter(dl)
  Protected Name.s = Space(256)
  ClearList(Info())
  Win32_DiskDriveToDiskPartition()
  ResetList(Info())
   While NextElement(Info())
    If dl = 0
       If Info()\PartNr\Driveletter = Left(Laufwerk,2)
          GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
          info()\Name = name  
          currentid = info()\PNPDeviceID
          For i = 0 To CountGadgetItems(0)
            If GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
              If GetGadgetItemText(0,i,0) > info()\PartNr\DriveLetter 
                AddGadgetItem(0,i,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
                WriteStringN(0,"Insert Device @ "+FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss",Date())+":   "+info()\PartNr\DriveLetter + "   " + info()\Name + "   " + info()\InterfaceType + "   " + info()\Model + "   " + info()\PNPDeviceID + "   " + info()\MediaType)
                Break
              ElseIf i = CountGadgetItems(0) And GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
                AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
                WriteStringN(0,"Insert Device @ "+FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss",Date())+":   "+info()\PartNr\DriveLetter + "   " + info()\Name + "   " + info()\InterfaceType + "   " + info()\Model + "   " + info()\PNPDeviceID + "   " + info()\MediaType)
                Break
              EndIf
              Delay(10)
            Else
              Break
            EndIf
          Next
         Break
       EndIf
       Delay(10)
     Else
      If CountGadgetItems(0) = 0
        GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
        info()\Name = name
        AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
      Else
        For i = 0 To CountGadgetItems(0)
          If GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
            GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
            info()\Name = name
            If GetGadgetItemText(0,i,0) > info()\PartNr\DriveLetter 
              AddGadgetItem(0,i,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
              Break
            ElseIf i = CountGadgetItems(0) 
              AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
              Break
            EndIf 
            Delay(10)
          Else
            Break
          EndIf
        Next
      EndIf
      Delay(10)
     EndIf  
   Wend
EndProcedure

Procedure.s GetDevice(Bits)
  For i = 'A' To 'Z'
    If Bits & 1 = 1
      Laufwerk.s = Chr(i)
    EndIf
    Bits = Bits >> 1
  Next
  ProcedureReturn Laufwerk
EndProcedure

Procedure CB(hwnd,msg,wParam,lParam)


  Protected *db.DEV_BROADCAST_HDR
  Protected *dbv.DEV_BROADCAST_VOLUME
  If msg = #WM_DEVICECHANGE
    Select wParam
      Case #DBT_DEVICEARRIVAL       
       
        *db = lParam
       
        If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME
          *dbv = *db
          Laufwerk = GetDevice(*dbv\dbcv_unitmask) + ":\"
          thread = CreateThread(@listFilesByLetter(),0)
          If master = currentid And master <> "" And currentid <> ""
            BlockInput_(#False)
            Debug 1
          EndIf 
        EndIf
       
      Case #DBT_DEVICEREMOVECOMPLETE
       
        *db = lParam
       
        If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME
          *dbv = *db
          Laufwerk.s = GetDevice(*dbv\dbcv_unitmask) + ":\"
           For i=0 To CountGadgetItems(0)
             If GetGadgetItemText(0,i,0) = Left(Laufwerk,2) And master <> GetGadgetItemText(0,i,4)
                WriteStringN(0,"Removed Device @ "+FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss",Date())+":   "+ GetGadgetItemText(0,i,0) + "   " + GetGadgetItemText(0,i,1)+ "   "+ GetGadgetItemText(0,i,2)+ "   " + GetGadgetItemText(0,i,3)+ "   " + GetGadgetItemText(0,i,4)+ "   " + GetGadgetItemText(0,i,5))
                RemoveGadgetItem(0,i)
              ElseIf master = GetGadgetItemText(0,i,4) And master <> "" And currentid <> ""
                WriteStringN(0,"Removed Master (lock pc) @ "+FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss",Date()))
                RemoveGadgetItem(0,i)
                BlockInput_(#True)
                Debug 0
             EndIf
           Next
        EndIf
       
    EndSelect
    ProcedureReturn 1
  EndIf

  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure  

If OpenWindow(0, 100, 100, 700, 350, "USB Recognition", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 0, 0, 700, 300, "Drive Letter", 116, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
   AddGadgetColumn(0, 1, "Name",116)
   AddGadgetColumn(0, 2, "Interface Type",116)
   AddGadgetColumn(0, 3, "Model",116)
   AddGadgetColumn(0, 4, "PNP Device-ID",116)
   AddGadgetColumn(0, 5, "Media Type",116)
   ButtonGadget(#Button,290,310,120,30,"Set device as master")
   
   CreateThread(@listFilesByLetter(),1)
   SetWindowCallback(@CB(),0)
   
   hIcon1 = LoadIcon_(0, #IDI_APPLICATION)
   hidden = 0
 
    AddSysTrayIcon(1, WindowID(0), hIcon1)
    SysTrayIconToolTip(1, "USB Recognition")
  
    If CreatePopupMenu(#Menu)
      MenuItem(#Menu_Refresh, "Refresh")
      MenuItem(#Menu_Minimize,"Minimize to tray")
      MenuBar()
      MenuItem(#Menu_Exit, "Exit")
    EndIf
    
   Repeat
    Event = WaitWindowEvent()
   
    Select Event
      Case #PB_Event_SysTray
        If EventType() = #PB_EventType_LeftClick Or EventType() = #PB_EventType_RightClick
          DisplayPopupMenu(#Menu, WindowID(0))
        EndIf
     
      Case #PB_Event_Menu
        Select EventMenu()
          Case #Menu_Refresh
            If hidden = 0 And Not IsThread(refresh)
              ClearGadgetItems(0)
              refresh = CreateThread(@listFilesByLetter(),1)
            EndIf
          Case #Menu_Minimize
            If hidden = 0
              HideWindow(0,1)
              SetMenuItemText(#Menu,#Menu_Minimize,"Maximize window")
              hidden = 1
            Else
              HideWindow(0,0)
              SetMenuItemText(#Menu,#Menu_Minimize,"Minimize to tray")
              hidden = 0
            EndIf
          Case #Menu_Exit
            exit = #True  
        EndSelect
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button
            For i = 0 To CountGadgetItems(0)
              If GetGadgetItemState(0,i) = #PB_ListIcon_Selected
                WriteStringN(0,"Device: "+GetGadgetItemText(0,i,1)+" ("+GetGadgetItemText(0,i,4)+")   Set As Master@ "+FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss",Date()))            
                master = GetGadgetItemText(0,i,4)
              EndIf
            Next
        EndSelect
      Case #PB_Event_CloseWindow
        exit = #True
       
    EndSelect
   
  Until exit
 EndIf
mfg deify

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 19:11
von The_Dark_Zim-.-
Hm eigentlich wollte ich dir gerade eine Lösung schicken, aber irgentwie geht die nicht mehr wenn ich es Kompiliert hab /:->
Strange sache... Scheint wohl nur mit dem Debugger zu Funktionieren :?

Hier meine Temp Datei (Gartiere für nix und bei Schäden nicht bei mir beschweren (heisst Benutzung auf eigende Gefahr)):
http://www.file-upload.net/download-250 ... k.rar.html

Gruß ZIM

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 19:51
von Fluid Byte
Wenn ich die Wahl hätte eine .EXE von "The_Dark_Zim-.-" runterzuladen oder mich freiwillig mit HIV zu infizieren würde ich wahrscheinlich letzteres wählen ..., plus Krebs.

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 19:53
von The_Dark_Zim-.-
:(

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 19:58
von deify
Fluid Byte hat geschrieben:Wenn ich die Wahl hätte eine .EXE von "The_Dark_Zim-.-" runterzuladen oder mich freiwillig mit HIV zu infizieren würde ich wahrscheinlich letzteres wählen ..., plus Krebs.
sry... aber von DIR hab ich bis jetzt nur unqualifizierte kommentare gehört. Nicht nur in diesem Thread auch schon in einem anderen habe ich gesehen, dass sich jemand über dich beschwert hat...

ich weiß jetzt kommt gleich wieder "IST MIR EGAL" aber kannst du nicht bitte einfach mal den mund halten, oder KONSTRUKTIVE kritik bringen, anstatt nur Müll zu fabrizieren.

danke dir ;)

und @ dark zim: hast du dazu noch die source? kannst du mir die evtl mal zukommen lassen? vllt via pm wenn es öffentlich stört , ich weiß ja nicht wie weit dass hier erlaubt ist ^^

andere frage, wenn das deaktivieren/aktivieren des taskmanager nicht legitim ist, gibt es denn eine möglichkeit diesen zwischenschritt bei strg alt entf ( also das Fenster mit der auswahl "Abmelden, Taskmanager und co") mit wondows oder sogar mit PB zu deaktivieren?


mfg deify

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 20:06
von Fluid Byte
deify hat geschrieben:und @ dark zim: hast du dazu noch die source? kannst du mir die evtl mal zukommen lassen? vllt via pm wenn es öffentlich stört , ich weiß ja nicht wie weit dass hier erlaubt ist ^^
Oh je, da ham' sich zwei Profis gefunden ... Bild

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 20:09
von deify
Fluid Byte hat geschrieben:
deify hat geschrieben:und @ dark zim: hast du dazu noch die source? kannst du mir die evtl mal zukommen lassen? vllt via pm wenn es öffentlich stört , ich weiß ja nicht wie weit dass hier erlaubt ist ^^
Oh je, da ham' sich zwei Profis gefunden ... Bild
ich weiß ja nicht warum du überhaupt noch was schreibst,

wenn dir nicht passt was ich sage, les einfach nichtsmehr in diesem thread, dann muss ich keine antworten auf sinnlose post schreibe...

und im gegensatz zu dir ist mir sowas wie "Freundlichkeit" schonmal untergekommen und ich verwende sie auch wenn mir leute normal antworten ;D

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 20:11
von jojo1541
Fluid Byte hat geschrieben:
deify hat geschrieben:und @ dark zim: hast du dazu noch die source? kannst du mir die evtl mal zukommen lassen? vllt via pm wenn es öffentlich stört , ich weiß ja nicht wie weit dass hier erlaubt ist ^^
Oh je, da ham' sich zwei Profis gefunden ... Bild
Und der größte davon bist DU. Abgesehen von irgendwelchen Beleidigungen hast du hier noch nichts beigetragen und auch sonst habe ich von dir nie viel konstruktives gesehen. Wenn du Leute vergraulen möchtest, dann such dir ein anderes Forum. :angry:

@deify: Natürlich ist es hier erlaubt, Codes zu posten. <)

Re: Der gute alte Taskmanager

Verfasst: 10.05.2010 20:12
von ts-soft
Hier ist eine Funktion um den Taskmanager zu beenden:

Code: Alles auswählen

Procedure StopTaskManager()
  Protected Privileges.TOKEN_PRIVILEGES
  Protected hToken.i
  OpenProcessToken_(GetCurrentProcess_(), #TOKEN_ADJUST_PRIVILEGES  | #TOKEN_QUERY, @hToken)
  Privileges\PrivilegeCount           = 1
  Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
  LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
  AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
  CloseHandle_(hToken)
  ExitWindowsEx_(5, 0)
EndProcedure
Vor dem Testen bitte alle Anwendungen schließen und alles speichern.
Achtung: Nutzung auf eigenes Risiko!