"Screenshot" vom Token unter Vista - wie sieht der aus?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • "Screenshot" vom Token unter Vista - wie sieht der aus?

      Als ich noch kein Vista hatte, habe ich mir oft gewünscht, mal einen Blick auf die einzelnen Token unter Vista werfen zu können - es hat sich dort ja so viel geändert, dass man gar nicht mehr genau sagen kann, ob etwas unter Vista läuft was man für XP geschrieben hat oder ob es nicht läuft.

      Wer hat Interesse daran, mal einen "Screenshot" einiger Token unter Vista zu sehen und erklärt zu bekommen, wie sich die Änderungen auswirken?
      Falls Interesse besteht, nehme ich mir mal etwas Zeit dafür...
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Token des Internet Explorers im Adminaccount
      Gruppen im Token:
      Gruppennamen / Flags
      None / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Jeder / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Administratoren / nur für Verbote, deaktiviert (16)
      Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      INTERAKTIV / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Authentifizierte Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Diese Organisation / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      S-1-5-5-0-192418 / nicht abschaltbar + Logon ID, standardm. aktiviert + aktiviert (-1073741817)
      LOKAL / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      NTLM-Authentifizierung / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Niedrige Verbindlichkeitsstufe / deaktiviert + aktivierter Integritätslevel (96)

      Privilegien im Token:
      Privilegienname / Status
      SeShutdownPrivilege / deaktiviert
      SeChangeNotifyPrivilege / aktiviert + standardmäßig aktiviert
      SeUndockPrivilege / deaktiviert
      SeIncreaseWorkingSetPrivilege / deaktiviert
      SeTimeZonePrivilege / deaktiviert

      Wichtige Infos über den Token:
      Typ des Tokens: Primärer Token
      Elevation Typ des Token (UAC): In den Rechten herabgesetzter Token {3}.
      Privilegienstatus des Token: Privilegien sind nicht angehoben {0}.
      Registry Virtualisation: aktivierbar, aktiviert
      Integritätslevel: Niedrige Verbindlichkeitsstufe
      String-SID des Integritätslevels: S-1-16-4096
      Mandatory Policy Level: MIC eingeschaltet, IL des Kindprozesses ist der niedrigere aus Datei IL und IL des Parent Prozesses ($3).

      _______________________________________________________________

      Nicht angehobener Token im Adminaccount:
      Gruppen im Token:
      Gruppennamen / Flags
      None / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Jeder / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Administratoren / nur für Verbote, deaktiviert (16)
      Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      INTERAKTIV / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Authentifizierte Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Diese Organisation / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      S-1-5-5-0-192418 / nicht abschaltbar + Logon ID, standardm. aktiviert + aktiviert (-1073741817)
      LOKAL / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      NTLM-Authentifizierung / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Mittlere Verbindlichkeitsstufe / deaktiviert + aktivierter Integritätslevel (96)

      Privilegien im Token:
      Privilegienname / Status
      SeShutdownPrivilege / deaktiviert
      SeChangeNotifyPrivilege / aktiviert + standardmäßig aktiviert
      SeUndockPrivilege / deaktiviert
      SeIncreaseWorkingSetPrivilege / deaktiviert
      SeTimeZonePrivilege / deaktiviert

      Wichtige Infos über den Token:
      Typ des Tokens: Primärer Token
      Elevation Typ des Token (UAC): In den Rechten herabgesetzter Token {3}.
      Privilegienstatus des Token: Privilegien sind nicht angehoben {0}.
      Registry Virtualisation: aktivierbar, aktiviert
      Integritätslevel: Mittlere Verbindlichkeitsstufe
      String-SID des Integritätslevels: S-1-16-8192
      Mandatory Policy Level: MIC eingeschaltet, IL des Kindprozesses ist der niedrigere aus Datei IL und IL des Parent Prozesses ($3).

      _______________________________________________________________

      Angehobener Token im Adminaccount:
      Gruppen im Token:
      Gruppennamen / Flags
      None / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Jeder / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Administratoren / nicht abschaltbar + kann Eigentümer sein, standardmäßig aktiviert + aktiviert (15)
      Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      INTERAKTIV / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Authentifizierte Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Diese Organisation / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      S-1-5-5-0-192418 / nicht abschaltbar + Logon ID, standardm. aktiviert + aktiviert (-1073741817)
      LOKAL / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      NTLM-Authentifizierung / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Hohe Verbindlichkeitsstufe / deaktiviert + aktivierter Integritätslevel (96)

      Privilegien im Token:
      Privilegienname / Status
      SeIncreaseQuotaPrivilege / deaktiviert
      SeSecurityPrivilege / deaktiviert
      SeTakeOwnershipPrivilege / deaktiviert
      SeLoadDriverPrivilege / deaktiviert
      SeSystemProfilePrivilege / deaktiviert
      SeSystemtimePrivilege / deaktiviert
      SeProfileSingleProcessPrivilege / deaktiviert
      SeIncreaseBasePriorityPrivilege / deaktiviert
      SeCreatePagefilePrivilege / deaktiviert
      SeBackupPrivilege / deaktiviert
      SeRestorePrivilege / deaktiviert
      SeShutdownPrivilege / deaktiviert
      SeDebugPrivilege / deaktiviert
      SeSystemEnvironmentPrivilege / deaktiviert
      SeChangeNotifyPrivilege / aktiviert + standardmäßig aktiviert
      SeRemoteShutdownPrivilege / deaktiviert
      SeUndockPrivilege / deaktiviert
      SeManageVolumePrivilege / deaktiviert
      SeImpersonatePrivilege / aktiviert + standardmäßig aktiviert
      SeCreateGlobalPrivilege / aktiviert + standardmäßig aktiviert
      SeIncreaseWorkingSetPrivilege / deaktiviert
      SeTimeZonePrivilege / deaktiviert
      SeCreateSymbolicLinkPrivilege / deaktiviert

      Wichtige Infos über den Token:
      Elevation Typ des Token (UAC): In den Rechten angehobener Token {2}.
      Privilegienstatus des Token: Privilegien im Token angehoben {1}!
      Registry Virtualisation: nicht aktivierbar, nicht aktiviert
      Integritätslevel: Hohe Verbindlichkeitsstufe
      String-SID des Integritätslevels: S-1-16-12288
      Mandatory Policy Level: MIC eingeschaltet ($1).

      _______________________________________________________________

      Token des Subsystems CSRSS:
      Gruppen im Token:
      Gruppennamen / Flags
      Systemverbindlichkeitsstufe / deaktiviert + aktivierter Integritätslevel (96)
      Jeder / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Authentifizierte Benutzer / nicht abschaltbar, standardmäßig aktiviert + aktiviert (7)
      Administratoren / kann Eigentümer sein, standardmäßig aktiviert + aktiviert (14)

      Privilegien im Token:
      Privilegienname Status
      SeCreateTokenPrivilege / deaktiviert
      SeAssignPrimaryTokenPrivilege / deaktiviert
      SeLockMemoryPrivilege / aktiviert + standardmäßig aktiviert
      SeIncreaseQuotaPrivilege / deaktiviert
      SeTcbPrivilege / aktiviert + standardmäßig aktiviert
      SeSecurityPrivilege / deaktiviert
      SeTakeOwnershipPrivilege / deaktiviert
      SeLoadDriverPrivilege / deaktiviert
      SeSystemProfilePrivilege / aktiviert + standardmäßig aktiviert
      SeSystemtimePrivilege / deaktiviert
      SeProfileSingleProcessPrivilege / aktiviert + standardmäßig aktiviert
      SeIncreaseBasePriorityPrivilege / aktiviert + standardmäßig aktiviert
      SeCreatePagefilePrivilege / aktiviert + standardmäßig aktiviert
      SeCreatePermanentPrivilege / aktiviert + standardmäßig aktiviert
      SeBackupPrivilege / deaktiviert
      SeRestorePrivilege / deaktiviert
      SeShutdownPrivilege / deaktiviert
      SeDebugPrivilege / aktiviert + standardmäßig aktiviert
      SeAuditPrivilege / aktiviert + standardmäßig aktiviert
      SeSystemEnvironmentPrivilege / deaktiviert
      SeChangeNotifyPrivilege / aktiviert + standardmäßig aktiviert
      SeUndockPrivilege / deaktiviert
      SeManageVolumePrivilege / deaktiviert
      SeImpersonatePrivilege / aktiviert + standardmäßig aktiviert
      SeCreateGlobalPrivilege aktiviert + standardmäßig aktiviert
      SeRelabelPrivilege / deaktiviert
      SeIncreaseWorkingSetPrivilege / aktiviert + standardmäßig aktiviert
      SeTimeZonePrivilege / aktiviert + standardmäßig aktiviert
      SeCreateSymbolicLinkPrivilege / aktiviert + standardmäßig aktiviert

      Wichtige Infos über den Token:
      Elevation Typ des Token (UAC): Mit keinem anderen Token verknüpft {1}.
      Privilegienstatus des Token: Privilegien im Token angehoben {1}!
      Registry Virtualisation: nicht aktivierbar, nicht aktiviert
      Integritätslevel: Systemverbindlichkeitsstufe
      String-SID des Integritätslevels: S-1-16-16384
      Mandatory Policy Level: MIC eingeschaltet ($1).


      Erst mal was, um einen blick drauf zu werfen, Erklärungen schiebe ich nach - wird an einigen Stellen bestimmt etwas interessanter werden und birgt wohl ein paar Überraschungen für die, denen das Thema zu trocken ist. :-)
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • a) Die kleine Registryfalle

      Solange ein Programm normal gestartet wird, arbeitet es selbst in einem Account mit Adminrechten mit einem nicht angehobener Token. Wie man aus dem Screenshot erkennen kann, ist in so einem Token die Gruppe Administratoren deaktiviert. Ein solcher Token hat aber im Registryschlüssel HKEY_LOCAL_MACHINE nur Leserechte, denn Schreibrechte besitzt dort in der Regel nur die Gruppe Administratoren. Alle älteren Programme, die Schreibrechte in HKEY_LOCAL_MACHINE benötigen, sich aber beim Starten keine Adminrechte anmelden, würden unter Vista also gar nicht mehr funktionieren.
      Damit ältere Programme trotzdem noch einigermaßen funktionieren, hat sich Microsoft das hier einfallen lassen: Registry Virtualisation
      Was ist das aber genau? Ein Programm, bei dem im Token die "Registry Virtualisation" eingeschaltet ist (Standard für normal gestartete Programme), schreibt gar nicht in den Registryschlüssel HKEY_LOCAL_MACHINE, in den eigentlich geschrieben werden soll, sondern in einen extra dafür angelegten Unterschlüssel, nämlich in HKEY_CLASSES_ROOT\VirtualStore\MACHINE.
      Beim Auslesen überprüft ein solches Programm dann zuerst diesen Schlüssel, bevor es aus HKEY_LOCAL_MACHINE liest. Das kann zu einer bösen Falle werden, denn solcher Code würde mit Adminrechten evtl. an einer ganz anderen Stelle lesen, als ohne:

      Quellcode

      1. Readini$("HKEY_2","Software\Test","Testeintrag")
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • horsthorn;680574 schrieb:

      ...und hier noch eine Google-Adresse

      http://de.wikipedia.org/wiki/Token_(EDV-Netzwerk)

      Ich habe mich auch erst schlau gemacht -
      Der Andreas überfährt einen ja mit seinem "Fachchinesisch" :-D


      Ist kein Fachschinesich, sondern grundlegende Sachen die man wissen sollte, um überhaupt unter neueren Betriebsystemen noch Programme schreiben zu können. Unter XP arbeitete quasi jeder mit vollen Rechten, ab Vista ist das nicht mehr so.

      Token: Unter Nt basierenden Systemen (NT, 2000, XP, Vista, ...) bekommt jeder Prozesse (also jedes laufende Programm) eine Art "Ausweis" verliehen, der darüber Auskunft gibt, wer es ausführt. Beim Öffnen eines Handles müssen oft Zugriffsrechte angegeben werden (zum Beispiel bei OpenProcess der erste Parameter). Dann wird vom OS anhand unter anderem anhand des Tokens überprüft, ob das anfragende Programm diese Rechte überhaupt besitzt es sie nicht, wird das Handle nicht geöffnet.

      Security Descriptor: Ist das Gegenstück zum Token. Objekte, auf die ein Handle geöffnet werden kann (Dateien, Prozesse,...) haben eine solche "Sicherheitsbeschreibung", die angibt, welcher Token auf ein Objekt in welcher Art und Weise Zugriff haben darf.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • @Andreas
      Ist kein Fachschinesich, sondern grundlegende Sachen die man wissen sollte, um überhaupt unter neueren Betriebsystemen noch Programme schreiben zu können. Unter XP arbeite quasi mit vollen Rechten, ab Vista ist das nicht mehr so.
      ...ich weiß ja, dass du es gut meinst und dein Wissen und Können befinden sich auf einem sehr hohen Level. Aber du musst auch eines berücksichtigen:
      Nicht jeder in diesem Thread oder im gesamten Forum hat das Grundwissen, die Ausbildung oder das Talent, alles, was du hier schreibst, auch "verdauen" zu können.
      Was ich mit meiner Bemerkung "überfährt" sagen wollte:
      Könntest du beim nächsten Mal die Fakten und Tatsachen in "hömoopathischen Dosen" verteilen ? :lol: Fast jeder hier (ich auch) wird froh sein, etwas zu lernen. Nur geht das nicht immer so schnell. :oops:
      Ein schönes Wochenende wünscht
    • Beim öffnen eines Handles müssen oft Zugriffsrechte angegeben werden (zum Beispiel bei OpenProcess der erste Parameter).


      Da wird die Sache interessant. Erkläre doch mal, welche Unterschiede es zwischen XP und Vista dort gibt und wie man den ersten Parameter vista-sicher angibt? :-)
      Gruß, Frank
    • Frabbing;680611 schrieb:

      Da wird die Sache interessant. Erkläre doch mal, welche Unterschiede es zwischen XP und Vista dort gibt und wie man den ersten Parameter vista-sicher angibt? :-)

      Du musst zum Beispiel ein Privileg aktivieren, um unter Vista überhaupt noch einen vernünftigen Taskmanager schreiben zu können, anders geht das gar nicht mehr. Da dein Taskmanager aber generell nicht mit Adminrechten läuft, musst du die dir erst mal holen, um überhaupt das Privileg aktivieren zu können. Werde das noch genau auseinandernehmen, auch warum das so ist.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Frabbing;680846 schrieb:

      Vorzugsweise demonstriert durch einen Quellcode. :p

      Der Quelltext steht, meines Wissens nach, schon hier im Forum (was das Aktivieren von Privilegien angeht).
      Adminrechte holt man sich in der fertigen EXE unter Vista so:

      Quellcode

      1. 'Quelltext erstellt von AHT
      2. @ShellExec(Par$(0),"RUNAS",1)

      ...oder noch besser durch Modifizierung des Manifests.
      "RUNAS" spricht, genau so wie das Vista-Manifest, die UAC an und es erscheint ein Popup, in dem bestätigt werden muss, dass dem zu startenden Programm Adminrechte gewährt werden (Programm wird nicht gestartet, wenn man dies ablehnt).
      Da aber noch mehr APIs beim Öffnen von Handles Zugriffsrechte benötigen (CreateFile, RegOpenKeyEx,...........) - es sind eigentlich alle APIs, die Handles öffnen - nützt einem Quelltext alleine eigentlich gar nichts, sondern man muss ganz grob und im Prinzip verstanden haben, worum es überhaupt geht.
      Wie man unter a) Die kleine Registryfalle etwas weiter oben sieht, nützt es auch nichts, Programme unter Vista in Bezug auf ihre Lauffähigkeit nur mal kurz anzutesten, ohne im Prinzip verstanden zu haben, was da abläuft - denn manche Sachen sehen zwar so aus, als würden sie funktionieren, sie tun es aber nicht. :-D
      In diesem Sinne, hier nochmals etwas Grundlagenwissen, bevor es ans "Eingemachte" geht:

      Privilegien: Privilegien sind nichts anderes als Rechte, bestimmte APIs ausführen zu dürfen. Bei solchen "eingeschränkten" APIs handelt es in der Regel um APIs, die (System-)Einstellungen setzen oder auslesen. Das Setzen der Zeit (SetSystemTime) ist zum Beispiel so eine API.
      Privilegien können zwar auch nur einem bestimmten "User" zugeordnet werden, in der Regel sind sie aber den Gruppen zugeordnet, denen ein User angehört. Ist ein Privileg im Token vorhanden, reicht das aber nicht aus. In der Regel muss es vor der Benutzung der jeweiligen API erst einmal aktiviert werden. Manche APIs aktivieren ihr Privileg selbst:-), andere wiederum nicht:(.
      Noch einmal als Beispiel die API SetSystemTime:
      Schritt 1) Wird die API SetSystemTime aufgerufen, wird zuerst im Token des aufrufenden Programmes nachgesehen, ob das Privileg für diese API (SeSystemtimePrivilege) dort vorhanden ist. Ist es nicht vorhanden, gibt die API eine Fehlermeldung zurück und setzt die Systemzeit nicht.
      Schritt 2)Ist es vorhanden, würde danach vom OS überprüft werden, ob das besagte Privileg aktiviert ist. Ist es nicht aktiviert, gibt die API eine Fehlermeldung zurück.
      Da die API SetSystemTime aber beim Aufruf das Privileg SeSystemtimePrivilege selbst aktiviert, fällt Schritt 2 hier weg.


      Was geschieht beim Öffnen eines Handles bis XP -> Beispiel OpenProcess:
      So, jetzt schauen wir uns mal Parameter 1 von OpenProcess etwas näher an... Bei Parameter 1 muss hier angegeben werden, in welcher Art und Weise man das Handle öffnen möchte - was man also damit tun will. $1 wäre zum Beispiel "Prozess beenden", $400 wäre "Informationen auslesen". Beim Aufruf von OpenProcess schaut das OS nun nach, was im "Security Descriptor" des Prozesses steht, der geöffnet werden soll. Der "Security Descriptor" (übersetzt Sicherheitsbeschreibung) ist aufgebaut wie eine Liste mit vielen Einträgen. Unter jedem Eintrag sind einer Gruppe oder einem "User" Zugriffsrechte zugeordnet, die für diesen "User" oder die Gruppe maximal erlaubt sind.
      Aus den Gruppen, die einem Prozess in dessen Token zugeordnet sind, ergiebt sich also das, was maximal beim Öffnen eines Handles für diesen Prozess überhaupt erlaubt ist. Standardmäßig sind jedem Prozess im Security Descriptor nur zwei Einträge zugeördnet:
      a) Account / Gruppe "System": Hat Vollzugriff, im Account System laufen Services (Dienste).
      b) Account / Gruppe "Administratoren": Hat in der Regel Vollzugriff.

      ...jetzt mal mit den Infos von oben einen Blick auf den Nicht angehobener Token im Adminaccount unter Vista werfen... Was ist da wohl beim Aufruf von OpenProcess noch erlaubt, wenn ein Programm "ganz normal" ausgeführt wird? 8O
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • horsthorn;680967 schrieb:

      @Andreas
      Mit deinem Code wird sogar unter...XP gefragt !

      Das weiß ich, unter Vista erscheint bei einem Admionaccount aber das UAC Popup (nicht dieses Popup), das auch erscheint, wenn man eine EXE über das Kontextmenü des Explorers mit Adminrechten ausführen will.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • b) Kein vernünftiger Vista-Taskmanager ohne SeDebugPrivilege!?

      AHT;680964 schrieb:

      Was ist da wohl beim Aufruf von OpenProcess noch erlaubt, wenn ein Programm "ganz normal" ausgeführt wird? 8O

      Habs mal mit folgendem Quelltext unter Vista getestet (normal gestartet, ohne extra Adminrechte anzumelden).

      Quellcode

      1. '#############################################################################################
      2. '###################### Quelltext erstellt von AHT #############################
      3. '#############################################################################################
      4. Def GetModuleFileNameEx(4) !"Psapi","GetModuleFileNameExA"
      5. Def CreateToolhelp32Snapshot(2) !"Kernel32", "CreateToolhelp32Snapshot"
      6. Def Process32First(2) !"Kernel32", "Process32First"
      7. Def Process32Next(2) !"Kernel32", "Process32Next"
      8. Def CloseHandle(1) !"Kernel32", "CloseHandle"
      9. Def GetCurrentProcessID(0) !"Kernel32", "GetCurrentProcessId"
      10. Def OpenProcess(3) !"Kernel32", "OpenProcess"
      11. DEF LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA"
      12. DEF AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges"
      13. DEF OpenProcessToken(3) !"advapi32","OpenProcessToken"
      14. DEF GetCurrentProcess(0) !"KERNEL32","GetCurrentProcess"
      15. DEF CopyMemory(3) !"kernel32","RtlMoveMemory"
      16. Declare Entry#, err&, handle&, cpid&, text$, text2$, PHandle&, Filename#
      17. Declare TOKEN_PRIVILEGES#, LUID#, Fehler&
      18. Struct PROCESSENTRY32=dwSize&, \
      19. cntUsage&, \
      20. th32ProcessID&, \
      21. th32DefaultHeapID&, \
      22. th32ModuleID&, \
      23. Threads&, \
      24. th32ParentProcessID&, \
      25. pcPriClassBase&, \
      26. dwFlags&, \
      27. szExeFile$(260)
      28. Dim Entry#,PROCESSENTRY32
      29. Entry#.dwSize& = SizeOf(Entry#)
      30. Proc FillProcessList
      31. DIM Filename#, 514
      32. cpid& = GetCurrentProcessID()
      33. handle& = CreateToolhelp32Snapshot(2,0)
      34. If handle&
      35. err& = Process32First(handle&, Entry#)
      36. If err&
      37. text$ = Str$(Entry#.th32ProcessID&)
      38. text2$ = Entry#.szExeFile$
      39. Clear Filename#, PHandle&
      40. PHandle& = OpenProcess($400 | $10, 0, Entry#.th32ProcessID&)
      41. IF PHandle& > 0
      42. GetModuleFilenameEx(PHandle&, 0, Filename#, 513)
      43. Closehandle(PHandle&)
      44. endif
      45. ADDSTRING "PID: " + text$ + " | Prozessname: " + text2$ + " | Prozesspfad: " + String$(Filename#,0)
      46. Repeat
      47. err& = Process32Next(handle&, Entry#)
      48. If err&
      49. text$ = Str$(Entry#.th32ProcessID&)
      50. text2$ = Entry#.szExeFile$
      51. Clear Filename#, PHandle&
      52. PHandle& = OpenProcess($400 | $10, 0, Entry#.th32ProcessID&)
      53. IF PHandle& > 0
      54. GetModuleFilenameEx(PHandle&, 0, Filename#, 513)
      55. Closehandle(PHandle&)
      56. endif
      57. ADDSTRING "PID: " + text$ + " | Prozessname: " + text2$ + " | Prozesspfad: " + String$(Filename#,0)
      58. EndIf
      59. Until err& = 0
      60. CloseHandle(handle&)
      61. EndIf
      62. EndIf
      63. Dispose Filename#
      64. EndProc
      65. ClearList
      66. FillProcessList
      67. EditBox("Prozesse",1)
      Alles anzeigen

      Das ganze gibt folgende Rückmeldung:

      PID: 0 | Prozessname: [System Process] | Prozesspfad:
      PID: 4 | Prozessname: System | Prozesspfad:
      PID: 404 | Prozessname: smss.exe | Prozesspfad:
      PID: 472 | Prozessname: csrss.exe | Prozesspfad:
      PID: 524 | Prozessname: wininit.exe | Prozesspfad:
      PID: 536 | Prozessname: csrss.exe | Prozesspfad:
      PID: 568 | Prozessname: services.exe | Prozesspfad:
      PID: 584 | Prozessname: lsass.exe | Prozesspfad:
      PID: 592 | Prozessname: lsm.exe | Prozesspfad:
      PID: 660 | Prozessname: winlogon.exe | Prozesspfad:
      PID: 788 | Prozessname: svchost.exe | Prozesspfad:
      PID: 836 | Prozessname: nvvsvc.exe | Prozesspfad:
      PID: 864 | Prozessname: svchost.exe | Prozesspfad:
      PID: 904 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1012 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1080 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1132 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1176 | Prozessname: audiodg.exe | Prozesspfad:
      PID: 1212 | Prozessname: SLsvc.exe | Prozesspfad:
      PID: 1268 | Prozessname: rundll32.exe | Prozesspfad:
      PID: 1276 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1452 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1684 | Prozessname: spoolsv.exe | Prozesspfad:
      PID: 1708 | Prozessname: sched.exe | Prozesspfad:
      PID: 1720 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1908 | Prozessname: avguard.exe | Prozesspfad:
      PID: 1956 | Prozessname: lxdjcoms.exe | Prozesspfad:
      PID: 264 | Prozessname: svchost.exe | Prozesspfad:
      PID: 448 | Prozessname: RichVideo.exe | Prozesspfad:
      PID: 464 | Prozessname: SbieSvc.exe | Prozesspfad:
      PID: 1524 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1728 | Prozessname: SearchIndexer.exe | Prozesspfad:
      PID: 2028 | Prozessname: XAudio.exe | Prozesspfad:
      PID: 1384 | Prozessname: hpqWmiEx.exe | Prozesspfad:
      PID: 2512 | Prozessname: taskeng.exe | Prozesspfad:
      PID: 2740 | Prozessname: taskeng.exe | Prozesspfad: C:\Windows\system32\taskeng.exe
      PID: 2776 | Prozessname: dwm.exe | Prozesspfad: C:\Windows\system32\Dwm.exe
      PID: 2832 | Prozessname: explorer.exe | Prozesspfad: C:\Windows\Explorer.EXE
      PID: 3024 | Prozessname: SynTPStart.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPStart.exe
      PID: 3040 | Prozessname: QPService.exe | Prozesspfad: C:\Program Files\Hp\QuickPlay\QPService.exe
      PID: 3052 | Prozessname: QLBCTRL.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Quick Launch Buttons\QLBCTRL.exe
      PID: 3068 | Prozessname: SynTPEnh.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPEnh.exe
      PID: 3084 | Prozessname: MSASCui.exe | Prozesspfad: C:\Program Files\Windows Defender\MSASCui.exe
      PID: 3100 | Prozessname: HPWAMain.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\HPWAMain.exe
      PID: 3116 | Prozessname: WiFiMsg.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\WiFiMsg.exe
      PID: 3128 | Prozessname: avgnt.exe | Prozesspfad: C:\Program Files\Avira\AntiVir PersonalEdition Classic\avgnt.exe
      PID: 3144 | Prozessname: VCDDaemon.exe | Prozesspfad: C:\Program Files\VirtualCloneDrive\VCDDaemon.exe
      PID: 3152 | Prozessname: hpwuSchd2.exe | Prozesspfad: C:\Program Files\Hp\HP Software Update\hpwuSchd2.exe
      PID: 3160 | Prozessname: lxdjamon.exe | Prozesspfad: C:\Program Files\Lexmark 1400 Series\lxdjamon.exe
      PID: 3180 | Prozessname: jusched.exe | Prozesspfad: C:\Program Files\Java\jre6\bin\jusched.exe
      PID: 3284 | Prozessname: WmiPrvSE.exe | Prozesspfad:
      PID: 3368 | Prozessname: SteganosHotKeyService.exe | Prozesspfad: C:\Program Files\Steganos Safe Home\SteganosHotKeyService.exe
      PID: 3392 | Prozessname: rundll32.exe | Prozesspfad: C:\Windows\System32\rundll32.exe
      PID: 3436 | Prozessname: sidebar.exe | Prozesspfad: C:\Program Files\Windows Sidebar\sidebar.exe
      PID: 3504 | Prozessname: HPAdvisor.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Advisor\HPAdvisor.exe
      PID: 3532 | Prozessname: ehtray.exe | Prozesspfad: C:\Windows\ehome\ehtray.exe
      PID: 3540 | Prozessname: SbieCtrl.exe | Prozesspfad: C:\Program Files\Sandboxie\SbieCtrl.exe
      PID: 3556 | Prozessname: wmpnscfg.exe | Prozesspfad: C:\Program Files\Windows Media Player\wmpnscfg.exe
      PID: 3820 | Prozessname: soffice.exe | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.exe
      PID: 3848 | Prozessname: ehmsas.exe | Prozesspfad: C:\Windows\ehome\ehmsas.exe
      PID: 3896 | Prozessname: soffice.bin | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.bin
      PID: 3936 | Prozessname: wmpnetwk.exe | Prozesspfad:
      PID: 2460 | Prozessname: HpqToaster.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\Shared\HpqToaster.exe
      PID: 3464 | Prozessname: PresentationFontCache.exe | Prozesspfad:
      PID: 3232 | Prozessname: SynTPHelper.exe | Prozesspfad:
      PID: 3856 | Prozessname: ieuser.exe | Prozesspfad: C:\Program Files\Internet Explorer\ieuser.exe
      PID: 2964 | Prozessname: HPHC_Service.exe | Prozesspfad:
      PID: 1116 | Prozessname: iexplore.exe | Prozesspfad: C:\Program Files\Internet Explorer\iexplore.exe
      PID: 668 | Prozessname: profed32.exe | Prozesspfad: C:\Program Files\XProfan9\profed32.exe
      PID: 3316 | Prozessname: Profan.exe | Prozesspfad: C:\Program Files\XProfan9\PROFAN.EXE

      Wie man hier sieht, wird bei vielen Prozessen noch nicht einmal der Pfad zur EXE angezeigt. Kein Wunder, denkt man sich, denn mein Programm hat ja, ohne dass ich sie vorher anmelde, ja gar keine Adminrechte (Admingruppe ist ja in einem nicht angehobenen Admintoken deaktiviert)!
      Startet man den obigen Code mit Adminrechten, sieht das ganze dann so aus... 8O

      PID: 0 | Prozessname: [System Process] | Prozesspfad:
      PID: 4 | Prozessname: System | Prozesspfad:
      PID: 404 | Prozessname: smss.exe | Prozesspfad:
      PID: 472 | Prozessname: csrss.exe | Prozesspfad:
      PID: 524 | Prozessname: wininit.exe | Prozesspfad:
      PID: 536 | Prozessname: csrss.exe | Prozesspfad:
      PID: 568 | Prozessname: services.exe | Prozesspfad:
      PID: 584 | Prozessname: lsass.exe | Prozesspfad:
      PID: 592 | Prozessname: lsm.exe | Prozesspfad:
      PID: 660 | Prozessname: winlogon.exe | Prozesspfad:
      PID: 788 | Prozessname: svchost.exe | Prozesspfad:
      PID: 836 | Prozessname: nvvsvc.exe | Prozesspfad:
      PID: 864 | Prozessname: svchost.exe | Prozesspfad:
      PID: 904 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1012 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1080 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1132 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1176 | Prozessname: audiodg.exe | Prozesspfad:
      PID: 1212 | Prozessname: SLsvc.exe | Prozesspfad:
      PID: 1268 | Prozessname: rundll32.exe | Prozesspfad:
      PID: 1276 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1452 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1684 | Prozessname: spoolsv.exe | Prozesspfad:
      PID: 1708 | Prozessname: sched.exe | Prozesspfad:
      PID: 1720 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1908 | Prozessname: avguard.exe | Prozesspfad:
      PID: 1956 | Prozessname: lxdjcoms.exe | Prozesspfad:
      PID: 264 | Prozessname: svchost.exe | Prozesspfad:
      PID: 448 | Prozessname: RichVideo.exe | Prozesspfad:
      PID: 464 | Prozessname: SbieSvc.exe | Prozesspfad:
      PID: 1524 | Prozessname: svchost.exe | Prozesspfad:
      PID: 1728 | Prozessname: SearchIndexer.exe | Prozesspfad:
      PID: 2028 | Prozessname: XAudio.exe | Prozesspfad:
      PID: 1384 | Prozessname: hpqWmiEx.exe | Prozesspfad:
      PID: 2512 | Prozessname: taskeng.exe | Prozesspfad:
      PID: 2740 | Prozessname: taskeng.exe | Prozesspfad: C:\Windows\system32\taskeng.exe
      PID: 2776 | Prozessname: dwm.exe | Prozesspfad: C:\Windows\system32\Dwm.exe
      PID: 2832 | Prozessname: explorer.exe | Prozesspfad: C:\Windows\Explorer.EXE
      PID: 3024 | Prozessname: SynTPStart.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPStart.exe
      PID: 3040 | Prozessname: QPService.exe | Prozesspfad: C:\Program Files\Hp\QuickPlay\QPService.exe
      PID: 3052 | Prozessname: QLBCTRL.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Quick Launch Buttons\QLBCTRL.exe
      PID: 3068 | Prozessname: SynTPEnh.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPEnh.exe
      PID: 3084 | Prozessname: MSASCui.exe | Prozesspfad: C:\Program Files\Windows Defender\MSASCui.exe
      PID: 3100 | Prozessname: HPWAMain.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\HPWAMain.exe
      PID: 3116 | Prozessname: WiFiMsg.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\WiFiMsg.exe
      PID: 3128 | Prozessname: avgnt.exe | Prozesspfad: C:\Program Files\Avira\AntiVir PersonalEdition Classic\avgnt.exe
      PID: 3144 | Prozessname: VCDDaemon.exe | Prozesspfad: C:\Program Files\VirtualCloneDrive\VCDDaemon.exe
      PID: 3152 | Prozessname: hpwuSchd2.exe | Prozesspfad: C:\Program Files\Hp\HP Software Update\hpwuSchd2.exe
      PID: 3160 | Prozessname: lxdjamon.exe | Prozesspfad: C:\Program Files\Lexmark 1400 Series\lxdjamon.exe
      PID: 3180 | Prozessname: jusched.exe | Prozesspfad: C:\Program Files\Java\jre6\bin\jusched.exe
      PID: 3284 | Prozessname: WmiPrvSE.exe | Prozesspfad:
      PID: 3368 | Prozessname: SteganosHotKeyService.exe | Prozesspfad: C:\Program Files\Steganos Safe Home\SteganosHotKeyService.exe
      PID: 3392 | Prozessname: rundll32.exe | Prozesspfad: C:\Windows\System32\rundll32.exe
      PID: 3436 | Prozessname: sidebar.exe | Prozesspfad: C:\Program Files\Windows Sidebar\sidebar.exe
      PID: 3504 | Prozessname: HPAdvisor.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Advisor\HPAdvisor.exe
      PID: 3532 | Prozessname: ehtray.exe | Prozesspfad: C:\Windows\ehome\ehtray.exe
      PID: 3540 | Prozessname: SbieCtrl.exe | Prozesspfad: C:\Program Files\Sandboxie\SbieCtrl.exe
      PID: 3556 | Prozessname: wmpnscfg.exe | Prozesspfad: C:\Program Files\Windows Media Player\wmpnscfg.exe
      PID: 3820 | Prozessname: soffice.exe | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.exe
      PID: 3848 | Prozessname: ehmsas.exe | Prozesspfad: C:\Windows\ehome\ehmsas.exe
      PID: 3896 | Prozessname: soffice.bin | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.bin
      PID: 3936 | Prozessname: wmpnetwk.exe | Prozesspfad:
      PID: 2460 | Prozessname: HpqToaster.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\Shared\HpqToaster.exe
      PID: 3464 | Prozessname: PresentationFontCache.exe | Prozesspfad:
      PID: 3232 | Prozessname: SynTPHelper.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPHelper.exe
      PID: 3856 | Prozessname: ieuser.exe | Prozesspfad: C:\Program Files\Internet Explorer\ieuser.exe
      PID: 2964 | Prozessname: HPHC_Service.exe | Prozesspfad:
      PID: 1116 | Prozessname: iexplore.exe | Prozesspfad: C:\Program Files\Internet Explorer\iexplore.exe
      PID: 668 | Prozessname: profed32.exe | Prozesspfad: C:\Program Files\XProfan9\profed32.exe
      PID: 200 | Prozessname: Tasks and Token.exe | Prozesspfad: C:\EIGENES\Tasks and Token\Tasks and Token.exe
      PID: 3228 | Prozessname: dllhost.exe | Prozesspfad:
      PID: 2316 | Prozessname: dllhost.exe | Prozesspfad:
      PID: 2856 | Prozessname: Prozesse_listen_3.exe | Prozesspfad: C:\EIGENES\Tests\Prozesse_listen_3.exe

      Selbst mit Adminrechten fehlen hier Leserechte! 8O
      Aber warum? Die Prozesse, die hier fehlen, sind die Services (Dienste), die im Systemaccount laufen. Normalerweise hat die Admingruppe - laut des Security Descriptors - hier auch unter Vista Vollzugriff... Warum kann man also keine Prozessdaten lesen? :(

      Dafür verantfortlich ist folgender Eintrag im Token: Integritätslevel
      Was ist das genau und wie wirkt sich das aus? Neben den normalen Zugriffsrechten wurde unter Windows Vista diese neue Art von Zugriffsbeschränkung eingeführt. Jedem Prozess wird dabei ein sogenannter Integritätslevel verliehen - je priveligierter ein Prozess, desto höher dieser Level. Auch erzeugte Objekte (in unsetem Fall Prozesse - aber auch Dateien, Registryschlüssel,...) können einen solchen (M)IL erhalten. Versucht nun ein Prozess ein Objekt zu öffnen, das mit einem höheren MIL versehen ist als der des Prozesses, wird der Zugriff verweigert, auch wenn die Zugriffsrechte dies erlauben würden (das ist so nur grob umrissen, mehr muss man aber erst mal nicht wissen).

      Wie man an diesem Eintrag im Token sieht Mandatory Policy Level, lässt sich dieses Verhalten aber auch abschalten - das muss aber vor der Erzeugung des jeweiligen Tokens geschehen - ist also wohl eher "Expertensache" (siehe Tool MILStarter: paules-pc-forum.de/forum/helfe…r-prozess-abschalten.html.)

      Was kann - oder muss - man also tun, um überhaupt vernünftig Prozessinfos unter Vista auslesen zu können?

      Es gibt da ein nettes Privileg, SeDebugPrivilege. Ist dieses Privileg im Token vorhanden und aktiviert, kann auch gegen die bestehenden Zugriffsrechte ein Handle auf einen Prozess erlangt werden.

      Hier nochmals Code zum Testen:

      Quellcode

      1. '#############################################################################################
      2. '###################### Quelltext erstellt von AHT #############################
      3. '#############################################################################################
      4. Def GetModuleFileNameEx(4) !"Psapi","GetModuleFileNameExA"
      5. Def CreateToolhelp32Snapshot(2) !"Kernel32", "CreateToolhelp32Snapshot"
      6. Def Process32First(2) !"Kernel32", "Process32First"
      7. Def Process32Next(2) !"Kernel32", "Process32Next"
      8. Def CloseHandle(1) !"Kernel32", "CloseHandle"
      9. Def GetCurrentProcessID(0) !"Kernel32", "GetCurrentProcessId"
      10. Def OpenProcess(3) !"Kernel32", "OpenProcess"
      11. DEF LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA"
      12. DEF AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges"
      13. DEF OpenProcessToken(3) !"advapi32","OpenProcessToken"
      14. DEF GetCurrentProcess(0) !"KERNEL32","GetCurrentProcess"
      15. DEF CopyMemory(3) !"kernel32","RtlMoveMemory"
      16. Declare Entry#, err&, handle&, cpid&, text$, text2$, PHandle&, Filename#
      17. Declare TOKEN_PRIVILEGES#, LUID#, Fehler&
      18. Struct PROCESSENTRY32=dwSize&, \
      19. cntUsage&, \
      20. th32ProcessID&, \
      21. th32DefaultHeapID&, \
      22. th32ModuleID&, \
      23. Threads&, \
      24. th32ParentProcessID&, \
      25. pcPriClassBase&, \
      26. dwFlags&, \
      27. szExeFile$(260)
      28. Dim Entry#,PROCESSENTRY32
      29. Entry#.dwSize& = SizeOf(Entry#)
      30. Proc Set_Privilege_Status
      31. Parameters Privilege_name$,Aktive&
      32. Declare NewState&,AH_Token_Handle&,LU_SYSTEM$
      33. DIM TOKEN_PRIVILEGES#,16
      34. DIM LUID#,8
      35. Clear LUID#,LU_SYSTEM$
      36. @LookupPrivilegeValue(@ADDR(LU_SYSTEM$),@ADDR(Privilege_name$),LUID#)
      37. CLEAR AH_Token_Handle&
      38. LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$20,@ADDR(AH_Token_Handle&))
      39. LONG TOKEN_PRIVILEGES#,0=1
      40. LET NewState&=TOKEN_PRIVILEGES#
      41. @CopyMemory(NewState&+4,LUID#,8)
      42. LET NewState&=Aktive&
      43. Clear Aktive&
      44. IF @or(NewState&,$2)=NewState&
      45. LET Aktive&=@or(AKTIVE&,$2)
      46. Endif
      47. IF @or(NewState&,$80000000)=NewState&
      48. LET Aktive&=@or(AKTIVE&,$80000000)
      49. Endif
      50. LONG TOKEN_PRIVILEGES#,12=Aktive&
      51. LET FEHLER&=@AdjustTokenPrivileges(AH_Token_Handle&,0,TOKEN_PRIVILEGES#,0,0,0)
      52. If AH_TOKEN_Handle&<>0
      53. @CLOSEHANDLE(AH_Token_Handle&)
      54. endif
      55. Dispose TOKEN_PRIVILEGES#
      56. Dispose LUID#
      57. endproc
      58. Proc FillProcessList
      59. DIM Filename#, 514
      60. cpid& = GetCurrentProcessID()
      61. handle& = CreateToolhelp32Snapshot(2,0)
      62. If handle&
      63. err& = Process32First(handle&, Entry#)
      64. If err&
      65. text$ = Str$(Entry#.th32ProcessID&)
      66. text2$ = Entry#.szExeFile$
      67. Clear Filename#, PHandle&
      68. PHandle& = OpenProcess($400 | $10, 0, Entry#.th32ProcessID&)
      69. IF PHandle& > 0
      70. GetModuleFilenameEx(PHandle&, 0, Filename#, 513)
      71. Closehandle(PHandle&)
      72. endif
      73. ADDSTRING "PID: " + text$ + " | Prozessname: " + text2$ + " | Prozesspfad: " + String$(Filename#,0)
      74. Repeat
      75. err& = Process32Next(handle&, Entry#)
      76. If err&
      77. text$ = Str$(Entry#.th32ProcessID&)
      78. text2$ = Entry#.szExeFile$
      79. Clear Filename#, PHandle&
      80. PHandle& = OpenProcess($400 | $10, 0, Entry#.th32ProcessID&)
      81. IF PHandle& > 0
      82. GetModuleFilenameEx(PHandle&, 0, Filename#, 513)
      83. Closehandle(PHandle&)
      84. endif
      85. ADDSTRING "PID: " + text$ + " | Prozessname: " + text2$ + " | Prozesspfad: " + String$(Filename#,0)
      86. EndIf
      87. Until err& = 0
      88. CloseHandle(handle&)
      89. EndIf
      90. EndIf
      91. Dispose Filename#
      92. EndProc
      93. ClearList
      94. Set_Privilege_Status "SeDebugPrivilege",$2
      95. FillProcessList
      96. EditBox("Prozesse",1)
      Alles anzeigen

      Dieser Code muss natürlich mit Adminrechten ausgeführt werden, um überhaupt erst einmal das besagte Privileg zu haben.
      Die Rückgabe sieht dann so aus, was schon mal einen ganz anderen Eindruck macht:

      PID: 0 | Prozessname: [System Process] | Prozesspfad:
      PID: 4 | Prozessname: System | Prozesspfad:
      PID: 404 | Prozessname: smss.exe | Prozesspfad: \SystemRoot\System32\smss.exe
      PID: 472 | Prozessname: csrss.exe | Prozesspfad: C:\Windows\system32\csrss.exe
      PID: 524 | Prozessname: wininit.exe | Prozesspfad: C:\Windows\system32\wininit.exe
      PID: 536 | Prozessname: csrss.exe | Prozesspfad: C:\Windows\system32\csrss.exe
      PID: 568 | Prozessname: services.exe | Prozesspfad: C:\Windows\system32\services.exe
      PID: 584 | Prozessname: lsass.exe | Prozesspfad: C:\Windows\system32\lsass.exe
      PID: 592 | Prozessname: lsm.exe | Prozesspfad: C:\Windows\system32\lsm.exe
      PID: 660 | Prozessname: winlogon.exe | Prozesspfad: C:\Windows\system32\winlogon.exe
      PID: 788 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 836 | Prozessname: nvvsvc.exe | Prozesspfad: C:\Windows\system32\nvvsvc.exe
      PID: 864 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 904 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\System32\svchost.exe
      PID: 1012 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\System32\svchost.exe
      PID: 1080 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\System32\svchost.exe
      PID: 1132 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 1176 | Prozessname: audiodg.exe | Prozesspfad:
      PID: 1212 | Prozessname: SLsvc.exe | Prozesspfad: C:\Windows\system32\SLsvc.exe
      PID: 1268 | Prozessname: rundll32.exe | Prozesspfad: C:\Windows\system32\rundll32.exe
      PID: 1276 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 1452 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 1684 | Prozessname: spoolsv.exe | Prozesspfad: C:\Windows\System32\spoolsv.exe
      PID: 1708 | Prozessname: sched.exe | Prozesspfad: C:\Program Files\Avira\AntiVir PersonalEdition Classic\sched.exe
      PID: 1720 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 1908 | Prozessname: avguard.exe | Prozesspfad: C:\Program Files\Avira\AntiVir PersonalEdition Classic\avguard.exe
      PID: 1956 | Prozessname: lxdjcoms.exe | Prozesspfad: C:\Windows\system32\lxdjcoms.exe
      PID: 264 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\system32\svchost.exe
      PID: 448 | Prozessname: RichVideo.exe | Prozesspfad: C:\Program Files\CyberLink\Shared Files\RichVideo.exe
      PID: 464 | Prozessname: SbieSvc.exe | Prozesspfad: C:\Program Files\Sandboxie\SbieSvc.exe
      PID: 1524 | Prozessname: svchost.exe | Prozesspfad: C:\Windows\System32\svchost.exe
      PID: 1728 | Prozessname: SearchIndexer.exe | Prozesspfad: C:\Windows\system32\SearchIndexer.exe
      PID: 2028 | Prozessname: XAudio.exe | Prozesspfad: C:\Windows\system32\DRIVERS\xaudio.exe
      PID: 1384 | Prozessname: hpqWmiEx.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\Shared\hpqwmiex.exe
      PID: 2512 | Prozessname: taskeng.exe | Prozesspfad: C:\Windows\system32\taskeng.exe
      PID: 2740 | Prozessname: taskeng.exe | Prozesspfad: C:\Windows\system32\taskeng.exe
      PID: 2776 | Prozessname: dwm.exe | Prozesspfad: C:\Windows\system32\Dwm.exe
      PID: 2832 | Prozessname: explorer.exe | Prozesspfad: C:\Windows\Explorer.EXE
      PID: 3024 | Prozessname: SynTPStart.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPStart.exe
      PID: 3040 | Prozessname: QPService.exe | Prozesspfad: C:\Program Files\Hp\QuickPlay\QPService.exe
      PID: 3052 | Prozessname: QLBCTRL.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Quick Launch Buttons\QLBCTRL.exe
      PID: 3068 | Prozessname: SynTPEnh.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPEnh.exe
      PID: 3084 | Prozessname: MSASCui.exe | Prozesspfad: C:\Program Files\Windows Defender\MSASCui.exe
      PID: 3100 | Prozessname: HPWAMain.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\HPWAMain.exe
      PID: 3116 | Prozessname: WiFiMsg.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Wireless Assistant\WiFiMsg.exe
      PID: 3128 | Prozessname: avgnt.exe | Prozesspfad: C:\Program Files\Avira\AntiVir PersonalEdition Classic\avgnt.exe
      PID: 3144 | Prozessname: VCDDaemon.exe | Prozesspfad: C:\Program Files\VirtualCloneDrive\VCDDaemon.exe
      PID: 3152 | Prozessname: hpwuSchd2.exe | Prozesspfad: C:\Program Files\Hp\HP Software Update\hpwuSchd2.exe
      PID: 3160 | Prozessname: lxdjamon.exe | Prozesspfad: C:\Program Files\Lexmark 1400 Series\lxdjamon.exe
      PID: 3180 | Prozessname: jusched.exe | Prozesspfad: C:\Program Files\Java\jre6\bin\jusched.exe
      PID: 3284 | Prozessname: WmiPrvSE.exe | Prozesspfad: C:\Windows\system32\wbem\wmiprvse.exe
      PID: 3368 | Prozessname: SteganosHotKeyService.exe | Prozesspfad: C:\Program Files\Steganos Safe Home\SteganosHotKeyService.exe
      PID: 3392 | Prozessname: rundll32.exe | Prozesspfad: C:\Windows\System32\rundll32.exe
      PID: 3436 | Prozessname: sidebar.exe | Prozesspfad: C:\Program Files\Windows Sidebar\sidebar.exe
      PID: 3504 | Prozessname: HPAdvisor.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\HP Advisor\HPAdvisor.exe
      PID: 3532 | Prozessname: ehtray.exe | Prozesspfad: C:\Windows\ehome\ehtray.exe
      PID: 3540 | Prozessname: SbieCtrl.exe | Prozesspfad: C:\Program Files\Sandboxie\SbieCtrl.exe
      PID: 3556 | Prozessname: wmpnscfg.exe | Prozesspfad: C:\Program Files\Windows Media Player\wmpnscfg.exe
      PID: 3820 | Prozessname: soffice.exe | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.exe
      PID: 3848 | Prozessname: ehmsas.exe | Prozesspfad: C:\Windows\ehome\ehmsas.exe
      PID: 3896 | Prozessname: soffice.bin | Prozesspfad: C:\Program Files\OpenOffice.org 3\program\soffice.bin
      PID: 3936 | Prozessname: wmpnetwk.exe | Prozesspfad: C:\Program Files\Windows Media Player\wmpnetwk.exe
      PID: 2460 | Prozessname: HpqToaster.exe | Prozesspfad: C:\Program Files\Hewlett-Packard\Shared\HpqToaster.exe
      PID: 3464 | Prozessname: PresentationFontCache.exe | Prozesspfad: C:\Windows\Microsoft.Net\Framework\v3.0\WPF\PresentationFontCache.exe
      PID: 3232 | Prozessname: SynTPHelper.exe | Prozesspfad: C:\Program Files\Synaptics\SynTP\SynTPHelper.exe
      PID: 3856 | Prozessname: ieuser.exe | Prozesspfad: C:\Program Files\Internet Explorer\ieuser.exe
      PID: 2964 | Prozessname: HPHC_Service.exe | Prozesspfad: c:\Program Files\Hewlett-Packard\HP Health Check\hphc_service.exe
      PID: 1116 | Prozessname: iexplore.exe | Prozesspfad: C:\Program Files\Internet Explorer\iexplore.exe
      PID: 668 | Prozessname: profed32.exe | Prozesspfad: C:\Program Files\XProfan9\profed32.exe
      PID: 200 | Prozessname: Tasks and Token.exe | Prozesspfad: C:\EIGENES\Tasks and Token\Tasks and Token.exe
      PID: 2856 | Prozessname: Prozesse_listen_3.exe | Prozesspfad: C:\EIGENES\Tests\Prozesse_listen_3.exe
      PID: 2724 | Prozessname: Integrity.exe | Prozesspfad: C:\EIGENES\Integrity\Integrity.exe
      PID: 1328 | Prozessname: winhlp32.exe | Prozesspfad: C:\Windows\winhlp32.exe
      PID: 2712 | Prozessname: SearchProtocolHost.exe | Prozesspfad: C:\Windows\system32\SearchProtocolHost.exe
      PID: 1896 | Prozessname: SearchFilterHost.exe | Prozesspfad: C:\Windows\system32\SearchFilterHost.exe
      PID: 648 | Prozessname: dllhost.exe | Prozesspfad: C:\Windows\system32\DllHost.exe
      PID: 3884 | Prozessname: dllhost.exe | Prozesspfad: C:\Windows\system32\DllHost.exe
      PID: 1592 | Prozessname: Prozesse_listen_2.exe | Prozesspfad: C:\EIGENES\Tests\Prozesse_listen_2.exe

      Ich hoffe, das ist so verständlich. Noch Fragen zu dieser Sache?
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Ich denke, ich habs jetzt ziemlich verstanden. :-)

      Der zweite Code erreicht auch unter XP bessere Ergebnisse, unter Vista kann ich es nicht testen.
      Wer es nicht testen kann unter XProfan 11: Einfach die profalt.inc einbinden...

      Noch Fragen zu dieser Sache?


      Wie kann ein Programm eigentlich prüfen, welche Adminrechte es besitzt? Sicher existiert dafür auch eine API.
      Gruß, Frank
    • Frabbing;681125 schrieb:

      Der zweite Code erreicht auch unter XP bessere Ergebnisse...

      Wo er unter XP bessere Ergebnisse erreicht, mal den Security Descriptor dieses Prozesses ansehen. Das Privileg umgeht natürlich auch unter XP Zugriffsrechte - unter Vista wirkt sich das wegen des MIL aber wesentlich mehr aus.

      Frabbing;681125 schrieb:


      Wie kann ein Programm eigentlich prüfen, welche Adminrechte es besitzt? Sicher existiert dafür auch eine API.

      Geht es um die Gruppe Administratoren oder um bestimmte Privilegien?
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Das geht so - läuft ab Windows2000:

      Quellcode

      1. '#############################################################################################
      2. '###################### Quelltext erstellt von AHT ##############################
      3. '#############################################################################################
      4. DEF @CheckTokenMembership(3) !"advapi32","CheckTokenMembership"
      5. DEF @GetProcAddress(2) !"KERNEL32","GetProcAddress"
      6. DEF @GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"
      7. Declare Member&,SID#,MHANDLE&,Module$,Funktion$
      8. LET MODULE$="Advapi32.DLL"
      9. LET Funktion$="CheckTokenMembership"
      10. LET MHANDLE&=@GetModuleHandle(@ADDR(Module$))
      11. IF @GetProcAddress(MHANDLE&,@ADDR(FUNKTION$))<>0
      12. DIM SID#,16
      13. LONG SID#,0=513
      14. LONG SID#,4=83886080
      15. LONG SID#,8=32
      16. LONG SID#,12=544
      17. @CheckTokenMembership(0,SID#,@ADDR(Member&))
      18. IF Member&=1
      19. @Messagebox("Du bist auf deinem Rechner ein Administrator!","Admincheck",64)
      20. else
      21. @Messagebox("Du hast keine Administratorrechte!","Admincheck",64)
      22. endif
      23. DISPOSE SID#
      24. else
      25. @MESSAGEBOX("Falsche Windowsversion","So'n Scheiß!",64)
      26. endif
      Alles anzeigen

      Hier wird geprüft, ob die Gruppe Administratoren im Token des aktuellen Prozesses aktiv ist.
      Ich erzeuge hier "per Hand" in der SID# den Wellknown SID der Admingruppe. Diese Kennung ist auf jedem Rechner gleich.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Funktioniert ganz ausgezeichnet! Sowas kann man ganz sicher mal gebrauchen, danke. :smile:
      Räusper...;)
      Sollte dem geneigten Publikum entgangen sein, dass diese Sache schon des längeren in meinem "a-1-b.exe"-Tool intregiert ist :?:

      Downloadbar auf meiner HP unter "Download" :-D