Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi aus Dienst herraus Anwendung starten (https://www.delphipraxis.net/104015-aus-dienst-herraus-anwendung-starten.html)

mexx81 26. Nov 2007 09:40


aus Dienst herraus Anwendung starten
 
Hallo,

ich bin neu hier, aber in einen anderen Delphi-Forum kein unbeschriebenes Blatt. Da ich aber bzgl. meines Problems hier ein paar nützliche Hinweise entdeckt habe, versuche ich hier mal mein Glück.

Mein Problem in der langen Version(ganz unten): http://www.delphi-forum.de/topic_aus...ten_78491.html

Mein Problem kurz:
Ich habe einen Dienst, der eine Anwendung starten soll. Mit ShellExecute und WinExec geht das nicht. Aber mit CreateProzess konnte ich die Anwendung starten, aber ich sehe keine Oberfläche, weil die Anwendung vom Dienst das SYSTEM als Benutzer erbt, was auch der Grund sein wird, weshalb die beiden anderen Funktionen nicht greifen. In diesen Forum habe ich viel über CreateProzessAsUser und CreateProcessWithLogonW gelesen. Beide Funktionen versprechen Erfolg, jedoch muss bei beiden der Benutzername und das Passwort eingegeben werden. Genau das kenne ich jedoch nicht!
  • in Bezug auf die lange Version: Nicht jeder Laptop wurde von uns zur Verfügung gestellt und wenn doch, wir haben das lokale Passwort ändern müssen, weil es bekannt wurde. Somit haben wir zwei verschiedene lokale Adminpasswörter im Einsatz und
  • unbekannte Passwörter von Laptop, welche nicht von uns kommen.

Die hier im Forum gefunden Theman bzgl. dieser Funktion haben aber aus meiner Sicht den Nachteil, dass ich Benutzername und Passwort kennen muss. Ich müsste also sowas wie CreateProzessAsAktiveUser haben, um einen Prozess zu erzeugen, welcher unter den aktiven Benutzer läuft. Nur wie geht das?

Danke, mexx81

Bernhard Geyer 26. Nov 2007 10:49

Re: aus Dienst herraus Anwendung starten
 
Zitat:

Zitat von mexx81
Die hier im Forum gefunden Theman bzgl. dieser Funktion haben aber aus meiner Sicht den Nachteil, dass ich Benutzername und Passwort kennen muss. Ich müsste also sowas wie CreateProzessAsAktiveUser haben, um einen Prozess zu erzeugen, welcher unter den aktiven Benutzer läuft. Nur wie geht das?

Gar nicht! Wäre eine 1A Sicherheitslücke. Unter Vista doppelt nicht.

Luckie 26. Nov 2007 10:50

Re: aus Dienst herraus Anwendung starten
 
Soll ein Dienst mit dem Benutzer interagieren können, muss es ein interaktiver diesnt sein. Dies wird von Microsft allerdings nicht empfohlen, das dieses Vorgehen eine sicherheitslücke darstellt. Unter Vista hat Microsoft auch die interaktiven Dienste abgeschafft.
Um mit einem dienst zu kommunizieren nimmt man deswegen ein Programm im User-Mode, welches über Mailslots, named Pipes etc, mit dem Dienst kommuniziert.

Relicted 26. Nov 2007 11:19

Re: aus Dienst herraus Anwendung starten
 
verständnisfrage:

warum/wie/weshalb gibt es z.b. bei einigen (antiviren-)programmen einen zusätzlichen prozess welcher als eine art watchdog fungiert? programm wird gekillt - prozess sieht das und startet das ganze neu. wie wird das denn gemacht?

gruß
reli

Bernhard Geyer 26. Nov 2007 11:22

Re: aus Dienst herraus Anwendung starten
 
Wenn der Watchdog unter dem gleichen Konto wie das zu überwachende Programm/Dienst läuft sollte es kein Problem darstellen.
Bzw. bei der Installation des Programms werden entsprechende Konten eingerichtet welche die entsprechenden Rechte haben.

Relicted 26. Nov 2007 11:31

Re: aus Dienst herraus Anwendung starten
 
ah okay... wieder was dazu gelernt..

gruß
reli

madas 26. Nov 2007 11:38

Re: aus Dienst herraus Anwendung starten
 
Zitat:

Zitat von mexx81
Mein Problem kurz:
Ich habe einen Dienst, der eine Anwendung starten soll. Mit ShellExecute und WinExec geht das nicht. Aber mit CreateProzess konnte ich die Anwendung starten, aber ich sehe keine Oberfläche, weil die Anwendung vom Dienst das SYSTEM als Benutzer erbt, was auch der Grund sein wird, weshalb die beiden anderen Funktionen nicht greifen. In diesen Forum habe ich viel über CreateProzessAsUser und CreateProcessWithLogonW gelesen. Beide Funktionen versprechen Erfolg, jedoch muss bei beiden der Benutzername und das Passwort eingegeben werden. Genau das kenne ich jedoch nicht!

Versuchs mal damit (naja das funzt schon, auch unter Vista):

Delphi-Quellcode:
var
  hToken : THandle;
  si: TStartupInfo;
  pi: TProcessInformation;

...

  if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
  begin
    FillChar(si, SizeOf(si), 0);
    with si do
    begin
      cb := SizeOf(si);
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := SW_NORMAL;
    end;

    if not CreateProcessAsUser(hToken, PChar(strMonitorPath), nil, nil, nil, False,
                               NORMAL_PRIORITY_CLASS or CREATE_NEW_PROCESS_GROUP,
                               nil, nil, si, pi) then
    begin
      OutCount := 0;
      MessageBox(0,PChar(SysErrorMessage(GetLastError)),'',MB_SERVICE_NOTIFICATION or MB_OK);
    end
    else
    begin
      Self.SendToMonitorPipe('RESETMONITOR' + #0);
      Self.SendToMonitorPipe('SHOWMONITOR' + #0);
      OutCount := 1;
    end;
  end
  else
  begin
    OutCount := 0;
    MessageBox(0,PChar(SysErrorMessage(GetLastError)),'',MB_SERVICE_NOTIFICATION or MB_OK);
  end;
  CloseHandle(hToken);
Units zum Einbinden sind: JwaWtsApi32, JWAWinBase

Luckie 26. Nov 2007 11:42

Re: aus Dienst herraus Anwendung starten
 
http://www.delphi-forum.de/viewtopic...c3a6f3a#473785 :roll:

mexx81 26. Nov 2007 12:06

Re: aus Dienst herraus Anwendung starten
 
Die Lösung von madas werde ich mir wohl mal in Ruhe ansehen müssen. Der Link von Luckie ist mein Beitrag, den ich ganz oben schon verlinkt habe! Da habe ich eine, naja, "Ganz-okay-Lösung" gefunden, die ich zunächst verwenden werde. Vista, Vista, Vista!!! Warum glauben alle nur, dass Vista ein Thema ist. Ich bin Admin einer Firmengruppe und sowohl meine Kollegen, als auch die Admins anderen Firmen sagen alle definitiv: Kein Vista vor 2009, wenn überhaupt! Für Firman hat Vista absolut keine Vorteile, nicht einen!!!! Nur Nachteile!!!! Vista kann nichts, was XP nicht auch schon kann. Alle andere zusätzlichen Funktionen von Vista sind für Firmen völlig unrelevant und fressen nur Performance.

Bernhard Geyer 26. Nov 2007 12:13

Re: aus Dienst herraus Anwendung starten
 
Zitat:

Zitat von mexx81
Warum glauben alle nur, dass Vista ein Thema ist.

Wer sagt denn das nicht u.U. im Untergrund einige Vista-Sicherheitserweiterungen auch im XP SP3 Einzug halten? Hier Vista zu ignorieren ist fahrlässig. Übrigens unser Admin hat die letzten neuen PC auch wieder mit XP ausgestatet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.
Seite 1 von 2  1 2      

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