Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SendMessage aus Services (https://www.delphipraxis.net/7674-sendmessage-aus-services.html)

Chewie 18. Aug 2003 20:50


SendMessage aus Services
 
Wieso kann ich eigentlich aus einem NT-Service keine Windows Messages an andere Fenster schicken? Ich habe testweise versucht, einen Broadcast von WM_COPYDATA aus einem Service zu schicken, welcher ein Programm dann auffängt. Das klappt aus "normalen" Anwendungen heraus, aber nicht aus einem Service.
Meine Frage deshalb: Klappt das prinzipiell schon nicht oder muss ich bei SendMessage aus einem Service etwas besonderes beachten? Der Hintergrund ist der, dass ich per ControlService einen benutzerdefinierten ControlRequest an den Service schicke, woraufhin dieser dem Programm, dass den Request abgeschickt hat, etwas zurückschicken soll. Im Notfall muss ich dann eben doch Mailslots, MMFs oder Pipes benutzen.

Luckie 19. Aug 2003 01:28

Re: SendMessage aus Services
 
Versuch mal PostMessage.

Assarbad 19. Aug 2003 13:01

Re: SendMessage aus Services
 
@Luckie: Erinerst du dich noch an Sonntag??? Was habe ich gesagt??? Messages, Handles etc nur Sessionweit!

Da Services in einer anderen WindowStation laufen, wirst du keine Chance haben das so zu machen. Nimm einen anderen IPC-Mechanismus. Beschreibungen findest du unter anderem in meinem Hooktutorial.

http://assarbad.net/stuff/tutorials/

NB: Bestimmte Nachrichten gehen simpel nicht mit Postmessage (WM_COPYDATA gehoert dazu!): "To send this message, call the SendMessage function as follows."

Luckie 19. Aug 2003 13:06

Re: SendMessage aus Services
 
Mist. Ja stimmt. :oops:

Motzi 19. Aug 2003 13:25

Re: SendMessage aus Services
 
Wenn sich der Thread "impersonated" könnte man auch SendMessage verwenden (is nicht ganz simpel), aber wie Assarbad schon sagte wäre eine andere IPC Wahl eher angebracht:

COM/DCOM
Pipes
Sockets
MMFs

Assarbad 19. Aug 2003 13:42

Re: SendMessage aus Services
 
@Motzi: Da blick ich nicht durch? Impersonated heisst immer noch nicht, dass der Service aus seiner WindowStation raus kann!
Wenn beispielsweise der Service mit Administrator-Credentials gestartet wird, wird eine eigene Logon-Session angelegt und fuer den Service eine WindowStation mit der Hex-Repraesentation der LogonSessionID.

Das hat aber nix mit WinSta0 und dem Default-Desktop zu tun ... um Zugrff auf die zu erhalten muss man die DACLs anpassen. Aber IMO wird das auch nicht ermoeglichen SendMessage zu benutzen. Einzige Chance koennte sein den Service interaktiv zu starten, was aber wieder Angriffspunkt fuer Shatter-Attack und andere aehnliche Angriffe bietet :(

Ich sehe also keine praktikable Moeglichkeit ausser eben einer anderen IPC-Methode.

@Motzi: Wollen wir mal gemeinsam ein Tut schreiben? *g*

Motzi 19. Aug 2003 13:50

Re: SendMessage aus Services
 
Naja, aber ein Thread kann durch impersonation einen Dialog (o.ä.) auf WinSta0 anzeigen, also würd ich sagen hat man möglicherweise auch ganz gute Chancen mit SendMessage Messages an Fenster in WinSta0 zu schicken (sag ich jetzt einfach mal so :roll: hab momentan kein Möglichkeit das nachzuprüfen).

Zitat:

Zitat von Assarbad
@Motzi: Wollen wir mal gemeinsam ein Tut schreiben? *g*

Könnten wir mal machen! 8) Wollt mich sowieso auch praktisch noch ein bisschen mehr in dieses Themengebiet einarbeiten! ;)

Assarbad 19. Aug 2003 13:55

Re: SendMessage aus Services
 
Gut, von dem Dialog aus (oder bei als interaktiv laufenden Services) geht es ;) ... keine Frage. Ist ein Fenster auf einer bestimmten WindowStation und ist der Desktop des aktuellen Threads gesetzt, geht es *g*

Aber interaktive Services sind seit Shatter ganz schoen aus der MOde gekommen.

Chewie 19. Aug 2003 18:43

Re: SendMessage aus Services
 
Danke für die Antworten. Dann werd ich wohl doch Pipes verwenden, auch wenns mit WM_COPYDATA so schön einfach gewesen wäre, denn da muss ich mir keinen Eventhandler selber basteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz