Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#7

Re: Benutzernamen von Prozessen ermitteln

  Alt 12. Jun 2006, 11:48
Aus diesem Grund zeigt der TaskMgr nur den Benutzernamen an, wenn er auf einem Terminalserver-System läuft. Ansonsten bleibt diese Option deaktiviert!!!

Also, keine Chance, es sei denn du ermittelst dir irgendwie die Prototypen der beiden Verdächtigen, einer Funktion WinStationGetProcessSid() aus WINSTA.DLL und einer CachedGetUserFromSid() aus UTILDLL.DLL?! Ich schau's mir nachher nochmal an, die aus WINSTA.DLL brauchst du jedenfalls definitiv, die andere offensichtlich nur wenn du einfach an den Benutzernamen kommen willst.

Die letzten beiden Parameter bei Bei Google suchenWinStationGetProcessSid sind IMO der SID (als PSID) und die Größe des SID in Bytes (als DWORD oder so). Die anderen Parameter konnte ich nicht entziffern. Ist wie schon von Nico erwähnt alles undokumentiert. Selbst bei ReactOS (sinst eine gute Quelle bei undokumentierten Funktionen) scheint man noch drüber zu grübeln ...
Sicher ist, daß TaskMgr diese Funktion auf einem TS aufruft. Unter W2K ist die Funktion per GetProcAddress eingebunden, bei WXP über Delay Loading ...

In meinem Disassemblat sehe ich sogar, daß offensichtlich vom Task-Manager auf TS eine Funktion WinStationTerminateProcess() benutzt wird um Prozesse zu beenden. Wo der Sinn ist, bleibt mir noch rätselhaft. Vielleicht ist das nur Terminal-Session-übergreifend nötig oder so?!? Jedenfalls konnte ich in einem russischen Forum den Hinweis auf WinStationGetProcessSid() finden Kak uznat' imja jusera, wo aber der Fragesteller auch nur nach Hilfe fragt ...
  Mit Zitat antworten Zitat