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/)
-   -   Dienst ohne Benutzereingabe starten (https://www.delphipraxis.net/202577-dienst-ohne-benutzereingabe-starten.html)

kub 19. Nov 2019 11:28

Dienst ohne Benutzereingabe starten
 
Hallo zusammen,

ich habe folgendes Problem. Meine Software läuft in einer Maschine im Hintergrund, ohne dass normalerweise Benutzereingaben erforderlich sind. Mein Programm erfordert, dass ein bestimmter Dienst läuft. Leider kommt es manchmal vor, dass dieser Dienst nicht gestartet wurde.

Mein Lösungsansatz war jetzt, einfach zu prüfen, ob der Dienst läuft und wenn nicht, diesen starten. Dazu brauche ich leider Admin Rechte. Wenn ich aber die Rechte über ein Manifest anfordere, muss der Bediener bei Programmstart eine UAC Meldung bestätigen. Das darf aber nicht bei jedem Programmstart erforderlich sein. Wenn der Fall auftritt, möchte ich eine Fehlermeldung an das Mastersystem weitergeben, die dann den Bediener dazu auffordern kann, an meinem System etwas zu machen. Dann kann ich eine Meldung anzeigen, die der Bediener quittieren muss und dabei wollte ich ein anderes Programm zu starten, das den Dienst startet. Hier würde es nicht stören, wenn der Bediener noch die UAC Meldung bestätigen muss.

Leider scheint das so auch nicht zu funktionieren, da ich beim Start des Zusatzprogramms (CreateProcess -> ErrorCode=740) eine Fehlermeldung bekomme. Also bräuchte ich scheinbar auch für den Start des Programms Admin Rechte.

Hat jemand eine Idee, wie ich dieses Problem lösen könnte?

Moombas 19. Nov 2019 12:53

AW: Dienst ohne Benutzereingabe starten
 
Mal ein Tipp, der bei uns geholfen hat:
Stell/installier mal den Dienst auf "verzögerten Start" und schau dann mal ob du das Problem dann immer noch hast.

HolgerX 19. Nov 2019 14:43

AW: Dienst ohne Benutzereingabe starten
 
Hmm..

Wenn ich es richtig verstehe, hat Du eine Applikation, welche einen zusätzlichen Dienst benötigt. Dieser ist wohl auch nicht von Dir.

Eine Option:
Baue Dir nen Starter Dienst, welchen Du einmal installierst.
Dieser läuft (normal) als LocalSystem.

Deine App schickt nun eine Nachricht (IPC) an deinen Dienst, welcher den anderen Dienst dann startet. Da Dein Dienst als LocalSystem läuft, gibt es kein UAC...

kub 19. Nov 2019 15:13

AW: Dienst ohne Benutzereingabe starten
 
Danke für die Vorschläge. Ich werde versuchen, das Ganze mal umzusetzen und dann rückmelden, ob es geklappt hat. Kann nur etwas dauern, da ich im Moment nicht an die Anlage darf und der Fehler nicht oft auftritt.

Gruß,
Thomas

Faxe 19. Nov 2019 15:32

AW: Dienst ohne Benutzereingabe starten
 
Also einen System-Dienst aus einem Programm starten, dazu nehme ich immer eine geplante Aufgabe.

Die Aufgabe braucht keinen Trigger, nur erweiterte Rechte, als Aktion geht z.B. Starten von dem Programm "net" mit Parameter "start <dienstname".

Die Anwendung führt nur den manuellen Start der Ausgabe aus, z.B. "SCHTASKS /Run /TN "<aufgabentitel>"

Dabei kommen keine UAC-Abfragen. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

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