Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Programm aus Service / Systemdienst starten ... (https://www.delphipraxis.net/117704-programm-aus-service-systemdienst-starten.html)

kuba 23. Jul 2008 22:00


Programm aus Service / Systemdienst starten ...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hy,

ich habe hier ein schönes Demo gefunden nach dem ich lange gesucht habe ...
... um diese Funktion in mein KIOSK-Softwarepaket zu integrieren...

vermutlich haben sich schon viele den Kopf zerbrochen um ein Programm aus einem Systemdienst heraus zu starten.

Laut Angaben des Autors ist die Software frei verwendbar (Freeware), anbei Informationen zum Autor und das Programm im Anhang.

ciao

KUBA


Author: Arno Garrels
Description: Simple demo that shows how to display a message box as well as
start a process in the interactive session from a TService.
Should work in all NT-versions including Windows Vista.
Creation: Aug 15, 2007
Version: 1.00
EMail: arno.garrels@gmx.de
Legal issues: Copyright (C) 2007 by Arno Garrels
Use it as you like, don't claim that you wrote it.

DP-Maintenance 24. Jul 2008 09:10

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Freeware" nach "Open-Source" verschoben.
Und was ist das, wenn nicht Open-Source ;-)

Dezipaitor 24. Jul 2008 10:03

Re: Programm aus Service / Systemdienst starten ...
 
Naja, einige Probleme und Fehler sehe ich da drin schon:

1. GetActiveWtsSession liefert eine Session zurück. Es können aber mehrere vorhanden sein. Welche soll denn nun verwendet werden? Meist geht das nur über ein Programm, welches schon dort ist und vom User angewiesen worden ist, etwas zu machen. Sonst kann man auch gleich WtsGetActiveConsoleSession nehmen.

2. Eine modale Messagebox aus dem Service? Normalerweise sind Dienste wiederverwendbar. D.h. es ist eine Schleife drin, in der Dinge abgearbeitet werden. Dort zu blocken würde bedeuten, dass ein anderer User nicht dasselbe machen kann.
Am besten wäre es, wenn der Dienst daher sofort ein Programm in die Session startet und das Programm den Rest macht. Man könnte natürlich auch einen Thread machen (kompliziert zu verwalten).

3. CreateProcessAsUser wird fehlschlagen, wenn parameter inherit handle auf true ist und die Session eine andere. Handlevererbung über Sessions geht nicht.

Mit JWSCL gehts auch einfacher :D JwCreateProcessInSession
(SVN Trunk version enthält neuste Version)

kuba 27. Jul 2008 18:13

Re: Programm aus Service / Systemdienst starten ...
 
@Dezipaitor
Gut aufgepasst ! Dafür ist es ohne Fremdkomponenten und auch unter Windows 2000 lauffähig.

KUBA

Dezipaitor 27. Jul 2008 21:02

Re: Programm aus Service / Systemdienst starten ...
 
Gut aufgepasst!
JwCreateProcessInSession läuft auch unter Windows 2000. Zumindest die aktuelle trunk-Version.
JWSCL ist keine Komponente, sondern eine Sammlung von Klassen.

kuba 27. Jul 2008 22:26

Re: Programm aus Service / Systemdienst starten ...
 
@Dezipaitor

Aha, das wusste ich nicht. Habe erst vor kurzem einen Blick auf die JEDI´s geworfen - ich bin Anfänger und kenne mich noch nicht so gut aus. Mit den JEDI´s werde ich mich auf jeden Fall noch intensiv beschäftigen - da geht doch noch einiges mehr ... :thumb:

KUBA

PS: Ich muss mir doch noch eine gute Lektüre zu Delphi besorgen, bisher habe ich meinen Erfahrungsschatz ausschließlich über das Internet (vorwiegend bei Delphi-Praxis) erworben.

Dezipaitor 27. Jul 2008 22:44

Re: Programm aus Service / Systemdienst starten ...
 
Ich empfehle immer, eine Lib zu verwenden und kein Copy&Paste von irgendwelchem Code.
Die Lib wird sicherlich von guten Leuten gepflegt. Bei dem Codeschnipsel kann man nicht sicher sein.


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