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 Anwendung aus einem Dienst heraus starten (https://www.delphipraxis.net/114077-anwendung-aus-einem-dienst-heraus-starten.html)

Trille 19. Mai 2008 14:47


Anwendung aus einem Dienst heraus starten
 
Hallo allerseits,
ich möchte einen Windows Dienst schreiben, der es mir erlaubt, auch mit normalen Benutzerrechten einen bereits installierten Tomcat mit Administratorrechten zu starten. Der Tomcat soll dabei nicht als Dienst, sondern als Applikation gestartet werden. Bisher habe ich nur die Möglichkeit mittels ShellExecute gefunden, wobei mir in einbem anderen Thread dringend davon abgeraten wurde. Welche anderen Möglichkeiten habe ich, um den Dienst erstmal überhaupt den Tomcat starten zu lassen?

Danke im voraus
Trille

Phoenix 19. Mai 2008 14:50

Re: Anwendung aus einem Dienst heraus starten
 
Michael hat Dir (aus guten Gründen) davon abgeraten das als Dienst zu realisieren. Er hat nicht von ShellExecute abgeraten.

Was spricht dagegen, das Mittels 'runas' mit hinterlegten Credentials zu realisieren?

Trille 19. Mai 2008 14:53

Re: Anwendung aus einem Dienst heraus starten
 
Zitat:

Zitat von Phoenix
Was spricht dagegen, das Mittels 'runas' mit hinterlegten Credentials zu realisieren?

Der Wunsch meines Chefs, das genau so zu implementieren :)

Er möchte, dass der Administrator den Dienst installiert und das dieser bei Systemstart mit gestartet wird. Ein normaler Anwender soll sich dann mit Hilfe dieses Dienstes den Tomcat mit Administratorberechtigung starten können. Warum das genau so sein soll, erschliesst sich mir auch nicht.

Bernhard Geyer 19. Mai 2008 15:02

Re: Anwendung aus einem Dienst heraus starten
 
Zitat:

Zitat von Trille
Zitat:

Zitat von Phoenix
Was spricht dagegen, das Mittels 'runas' mit hinterlegten Credentials zu realisieren?

Der Wunsch meines Chefs, das genau so zu implementieren :)

Und wenn der Chef sagt du sollst aus dem Fenster springen machst du das auch :mrgreen:

Technisch wird die gewünschte Lösung und Zeiten von Würmern und Viren von Windows mehr und mehr unmöglich gemacht.

Phoenix 19. Mai 2008 15:03

Re: Anwendung aus einem Dienst heraus starten
 
*seufz*

Was an
Zitat:

Zitat von Luckie
Lies dir am besten erst mal elementare Grundlagen bezüglich der Windows Sicherheit an und wie sie funktioniert, sonst gibt das nichts. Ich weise heute bestimmt schon zum dritten mal daraufhin, dass ein Dienst in einer anderen WindowsStation läuft und somit keinen Zugriff auf die Desktops in deiner interaktiven WindowsStation. Das mit Shellexecute gestartete Programm dürftes du deshalb nie zu sehen bekommen.

hast Du denn jetzt nicht verstanden?

Um das mal in Tacheles zu übersetzen: Du kannst aus einem Dienst heraus keine Anwendungen starten, die auf dem User-Desktop laufen.

Würde der Tomcat als Dienst laufen, dann wäre das was anderes. Dann könntest Du einen Dienst und ein Desktop-Tool schreiben. Das Desktop Tool könnte dann mit Deinem Dienst kommunizieren und darüber dann den anderen Dienst (also den Tomcat) starten bzw. beenden.

Trille 19. Mai 2008 15:11

Re: Anwendung aus einem Dienst heraus starten
 
Ah ok, das hatte ich nicht richtig gelesen, sorry.
Also angenommen, der Tomcat wuerde als Dienst laufen, wie könnte ich dann anfangen?

Phoenix 19. Mai 2008 15:17

Re: Anwendung aus einem Dienst heraus starten
 
Du brauchst folgendes:

1. Dienst.
Während er läuft macht er gar prinzipiell gar nichts, ausser auf eine Verbindung der Clientanwendung zu warten (Stichwort IPC, wie auch immer). Für die Clientanwendung bietet er zwei Funktionen an: Tomcat starten und Tomcat stoppen. Die machen genau das: Den Tomcat-Dienst starten oder stoppen.
Hier mal ein Ansatzpunkt: http://msdn.microsoft.com/en-us/library/ms686321.aspx

2. Die Clientanwendung.
Sie bietet dem Benutzer diese zwei Funktionen an, und reicht sie eben via IPC an den Dienst durch.

That's it.

Trille 19. Mai 2008 15:33

Re: Anwendung aus einem Dienst heraus starten
 
Meine Nachfrage hat ergeben, dass der Tomcat definitiv als Applikation laufen muss. Jedoch muss er nur gestartet werden, es muss also auch nix zu sehen sein. Ist dies möglich oder geht das nicht?

Bernhard Geyer 19. Mai 2008 15:34

Re: Anwendung aus einem Dienst heraus starten
 
Zitat:

Zitat von Trille
Meine Nachfrage hat ergeben, dass der Tomcat definitiv als Applikation laufen muss. Jedoch muss er nur gestartet werden, es muss also auch nix zu sehen sein. Ist dies möglich oder geht das nicht?

Sollte ganz normal z.B. mit ShellExecute gehen. Jedoch wirst du Fehlersuchprobleme haben fall er dir mal abschmiert.

Trille 19. Mai 2008 15:36

Re: Anwendung aus einem Dienst heraus starten
 
Das ist egal, da Logfiles benutzt werden. Mit welchen Rechten läuft denn dann der Tomcat? Mit denen des Dienstes oder mit denen des aktuell angemeldeten Benutzers?

SirThornberry 19. Mai 2008 15:45

Re: Anwendung aus einem Dienst heraus starten
 
wenn dein Dienst etwas startet läuft es mit den Rechten des Dienstes. Startest du den Dienst mit Adminrechten läuft das Programm mit Adminrechten. Startest du den Dienst normal läuft es eben mit den üblichen Dienstrechten.

Dezipaitor 19. Mai 2008 18:00

Re: Anwendung aus einem Dienst heraus starten
 
Ich liebe diesen Thread!!! :dp:

Ihr alle liegt mal soooooooooooooooooo weit daneben, wenn ihr glaubt, dass man mit einem Dienst kein Programm für den Anwender als Admin starten lassen kann.
Die Zutaten dazu sind:
1. ein Token des Nutzers
2. eins neues Token (hier geht's schon los)
3. und natürlich CreateProcessAsUser
4. dazu noch SetTokenInformation für die SessionID

Es ist wie bei dem ColaRezept. Die Zutaten kennt man. Aber wie mischt man sie? :wall: Ist natürlich hochkompliziert. :gruebel:

:warn: Das ganze ist jedoch höchst gefährlich und kann bei jeder neuen Windowsversion (auch die alten) ein Problem erzeugen. Im Moment funkz es zumindest bei mir gut :mrgreen:
:warn: Warum gefährlich? Naja, ein normaler Benutzer könnte die Tomcat Dateien durch eigene ersetzen. D.h. man muss diese erstmal unersetzlich machen. (ACL) :dance:

Aber ich verweise gerne mal auf die JWSCL und "We support YOU developing with JWA and JWSCL!".

Luckie 19. Mai 2008 18:48

Re: Anwendung aus einem Dienst heraus starten
 
Zitat:

Zitat von Dezipaitor
Ihr alle liegt mal soooooooooooooooooo weit daneben, wenn ihr glaubt, dass man mit einem Dienst kein Programm für den Anwender als Admin starten lassen kann.

Es geht aber darum, dass er ursprünglich einen Dienst mit Benutzerrechten steuern wollte. Und das get definitiv nicht, sonst könnte ja jeder Virus mit Benutzerrechten den Virenscanner ausknipsen.

Dezipaitor 19. Mai 2008 21:18

Re: Anwendung aus einem Dienst heraus starten
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Dezipaitor
Ihr alle liegt mal soooooooooooooooooo weit daneben, wenn ihr glaubt, dass man mit einem Dienst kein Programm für den Anwender als Admin starten lassen kann.

Es geht aber darum, dass er ursprünglich einen Dienst mit Benutzerrechten steuern wollte. Und das get definitiv nicht, sonst könnte ja jeder Virus mit Benutzerrechten den Virenscanner ausknipsen.

Meinst du nicht eher diesen Thread? http://www.delphipraxis.net/internal...t.php?t=134935

Hier geht es doch um: Dienst soll Programm starten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 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 by Thomas Breitkreuz