Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm starten - vor Anmeldung? (https://www.delphipraxis.net/49085-programm-starten-vor-anmeldung.html)

EagleData 5. Jul 2005 10:44


Programm starten - vor Anmeldung?
 
Hi,

ich hab ein Programm geschrieben, was Temperatursensoren überwacht und Alarm schlägt. Das Programm soll bei uns auf dem Server laufen (Windows Server 2003). Nun will ich es aber so haben, dass wenn jemand den Server neu startet, dass das Programm dann automatisch gestartet wird. Dazu könnte ich es ja einfach in den Autostart packen, geht aber nicht so einfach weil es ja auch gestartet werden muss, wenn sich niemand anmeldet. Die Idee war daher noch, das Programm als Dienst laufen zu lassen. Nur dürfen Dienste Formulare haben? Sonst muss ich sehen das ich den reinen Überwachungsprozess extrahiere und daraus nen Dienst mache.

Hat jemand ne Idee?

Luckie 5. Jul 2005 10:47

Re: Programm starten - vor Anmeldung?
 
Dürfen schon, ist nur nicht zu empfehlen. Microsoft rät selber von interaktiven Diensten ab.

EagleData 5. Jul 2005 10:52

Re: Programm starten - vor Anmeldung?
 
Dann kann ich mein Programm also einfach als Dienst installieren und es wird automatisch gestartet?

Luckie 5. Jul 2005 10:58

Re: Programm starten - vor Anmeldung?
 
Nein, es muss schon als Dienst programmiert sein. Es gibt nur auch interaktive Dienste, die mit dem Desktop in der WinStat des Benutzers kommunizieren können.

barf00s 5. Jul 2005 11:05

Re: Programm starten - vor Anmeldung?
 
"mit der WinStat" << was soll das sein?

Catbytes 5. Jul 2005 11:14

Re: Programm starten - vor Anmeldung?
 
Ich dachte beim Windows 2003 Server wurde der Start von Diensten _vor_ der Anmeldung deaktiviert. :gruebel:

NicoDE 5. Jul 2005 11:14

Re: Programm starten - vor Anmeldung?
 
Zitat:

Zitat von barf00s
"mit der WinStat" << was soll das sein?

WindowStation (WinSta)

Luckie 5. Jul 2005 11:30

Re: Programm starten - vor Anmeldung?
 
Puh. Das ist etwas komplexer. Unter Windows NT / 2000 / XP gibt es so genannte Windows Stations und diese beinhalten Desktops. Genau wie Windows bei der Authenmtifizierung session orientiert vorgeht, geht es auch beim User Interface sessionen orientiert vor mittles Windows Stations. Damit nicht jedes GDI Objekt jedes mal an die Authetifizierung gebunden ist, stellt Windows eine geschütze Umgebung bereit, in dem ein GDI Objekt existieren kann, ohne sich jedes mal authentifizieren zu müssen. Und dies ist eine Windows Station. Der Sicherheitbeschreiber eines Objektes ist dann mit einer Windows Sation verbunden und erlaubt es so seinem Besitzer bestimmte Aspekte seiner Umgebung zu kontrollieren. Zum Beispiel das Erstellen von Fenstern, Menüs und Desktops oder die Zwischenablage einzusehen.
Eine Windows Station ist also so was wie eine Sandbox für Fenster. Wann immer ein Fenster erstellt wird, ist es für immer an diese Windows Station gebunden. Demzufolge können Fenster in anderen Windows Stations nicht auf Fenster in anderen Windows Stationen zugreifen.
Im System gibt es jetzt nur eine interaktive Windows Station für den Benutzer und das ist die WinSta0. In dieser Windows Station befindet sich auch der default Desktop auf dem sich der Benutzer bewegt. Ein Service hat nun weitergehende Rechte als ein Benutzer und läuft demnach in einer anderen Windows Station, die ihm mehr Rechte zu gesteht. Jetzt kann man einen interaktiven Service schreiben, dieser Service hat dann außnahmsweise die Möglichkeit mit der interaktiven Windows Station des Benutzers zu kommunizieren mittels eines Fensters. Und jetzt wird auch das Sicherheitsloch deutlich bei einem interaktiven Service, gelingt es mir Code in den Service einzuschleusen, durch einen BufferOverflow zum Beispiel, wird dieser Code im Sicherheitskontext des Services ausgeführt und das ist potentiell gefährlich.

Dies ist auch die Erklärung warum man zum Beispiel mit FindWindow nicht das Fenster findet, welches erscheint, wenn man unter Windows 2000 Strg+Alt+Entf drückt, es läuft auf einem anderen Desktop. Oder warum es problematisch ist mit EnumWindows in einem Sevice Fenster auf dem Desktop des Benutzers aufzulisten.

Ich hoffe, das war ausführlich und verständlich genug.

EagleData 5. Jul 2005 12:00

Re: Programm starten - vor Anmeldung?
 
Ok, ich müsste es also als Dienst programmieren. Würde zur Not auch ohne Form gehen. Problematisch wird nur, das das programm eine Logdatei erstellt. und wenn sich jetzt 2 User am Server anmelden würde der dienst ja 2mal gestartet oder? damit würde ja 2 instanzen auf die logfile zugreifen, was wieder probleme verursacht.

EagleData 5. Jul 2005 12:04

Re: Programm starten - vor Anmeldung?
 
Zitat:

Zitat von Catbytes
Ich dachte beim Windows 2003 Server wurde der Start von Diensten _vor_ der Anmeldung deaktiviert. :gruebel:

wäre ansich nich das Problem, man könnte es vielleicht auch auf einem der Win2K Server laufen lassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr.
Seite 1 von 2  1 2      

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