Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#11

Re: Mit Service auf Desktop zeichnen

  Alt 10. Sep 2006, 10:55
Habe keinen Bock o.g. zu wiederholen. Fakt ist, daß ein Service mal erstens nie interaktiv sein sollte (Stichwort: Bei Google suchenShatter-Attack), was schon einige AV-Hersteller erfahren durften.

Du kannst einem Service-Thread auch sagen, daß er sich an einen anderen Desktop hängen soll, der aber immernoch in der gleichen Window-Station sein muß (MSDN-Library durchsuchenSetThreadDesktop). Zuvor müßte dein Prozeß aber Zugriff auf die WindowStation und den Desktop bekommen und dann die WindowStation wechseln (MSDN-Library durchsuchenSetProcessWindowStation). Aus dem Betrachten der Objektverzeichnis-Hierarchie nehme ich an, daß man die WindowStations einem jeweiligen Terminal zuordnen kann (wie andere Objekte auch). Allerdings ist das offenbar im PSDK nicht dokumentiert und ich habe keine Zeit mich ausführlich damit zu beschäftigen. Es gibt da spezielle DLLs zum Thema (WinSta.dll usw). Allesamt mit undokumentierten Funktionen die in MS-Tools (z.B. TaskManager) rege Verwendung finden.

Ich an deiner Stelle würde mir eine Ersatz-GINA basteln. Diese GINA kann jederzeit alles auf allen interaktiven Desktops (auch den SAS-Desktops) machen, wenn du es brauchst. Etwas Code (veraltet, weil Delphi) hier: http://assarbad.info/stuff/!export/ancient/agreementgina.rar

Zwar erfordert das unter Vista eine Neuausrichtung (dort gibt es eine neue Methode welche die GINA ersetzt, soweit ich weiß), aber für alle vorigen NT-Systeme bist du voll kompatibel.
  Mit Zitat antworten Zitat