Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm starten ohne Benutzer (https://www.delphipraxis.net/205515-programm-starten-ohne-benutzer.html)

Helmi 18. Sep 2020 16:04

Programm starten ohne Benutzer
 
Hallo,

ich hab einen Windows-Home-Server (so ein Abklatsch von Windows Server 2003) auf dem ich ein Programm von mir am Laufen habe.
Soweit so gut.

Der Server ist nicht immer aktiv.
Wenn nicht, dann ist er im Standby.

Wenn ich den Server mal wieder neu starte, dann möchte ich, dass das Programm von mir mit gestartet wird.
Nur wird anscheinend kein Benutzer mit gestartet, so dass bislang meine bisherigen Versuche fehlschlugen.

Was hab ich versucht:
  • Autostart vom Benutzer "Administrator"
  • Autostart aller Benutzer
  • geplante Tasks von Windows (Event: Programm-Start bei System-Start)

Dass die Autostarts nicht funktionierten, ist klar, weil kein Benutzer angemeldet ist.
Wieso der Task nicht funktioniert hat, hab ich bislang noch nicht rausgefunden.

Gibt es eine elegantere Möglichkeit?
Vielleicht ein Dienst?
Falls ja, vielleicht hätte jemand ein Beispiel dafür.
Hab bislang noch keinen Dienst programmiert.

MyRealName 18. Sep 2020 16:33

AW: Programm starten ohne Benutzer
 
Ein programm wird ja im Benutzerkontext gestartet, versuch es mal mit einem Service

HolgerX 18. Sep 2020 17:05

AW: Programm starten ohne Benutzer
 
Hmm..

Es gibt hier nur 2 Optionen:

1.) Autologon
Unter Windows kann ein User in der Registry eingetragen werden, welcher für eine automatische Anmeldung verwendet wird.
In dessen Autostart kann dann dein Prog gestartet werden.

2.) Dienst
Deine Applikation kann als Dienst installiert werden (hier gibt es Tools von MS und anderen) dann wird diese automatisch beim Windowsstart, ohne automatische Anmeldung, gestartet.

Hier aber ACHTUNG: Wenn deine Applikation eingaben benötigt oder Dialoge bestätigt werden müssen, dann vergiss es.
Nur bei Option 1 kannst Du dich per z.B. RDP auf den Server aufschalten (unter Verwendung des speziellen Users) und dann deine Applikation bedienen.

Beim Dienst kommst du nicht an die Fenster ran...

himitsu 18. Sep 2020 19:14

AW: Programm starten ohne Benutzer
 
Aufgabenplanung: Dort kann man den Nutzer angeben, aber das ist auch vorallem "nur" der Nutzer, mit dessen Rechten das Programm dann läuft,
und das muß nicht die Session des "Console"-Nutzers sein, welches Jener ist, der den Desktop sieht und wo Maus und Tastatur draufgeschaltet werden.

Über einen Trigger ala "Bei Anmeldung" kann man aber das Programm auch in der Console laufen lassen, also "sichtbar" im Vordergrund.


Wie man eine Session startet, weiß ich aber auch noch nicht. (wobei es hier eh nur den TerminalServer betrifft, wo es mehrere Sessions "sichtbarer" Nutzer gibt)
Auf einem normalen PC düfte (vermutlich) das Programm dann auch sichtbar werden, wenn man für den Start jenen "Benutzer" wählt, welcher sich anschließend auch einloggt.


Das Einzige was ich kann, ist eine "aktive" Session mit der Console zu verbinden, also "automatisch" Einzuloggen, so als wenn der Nutzer auf dem Speerbildschirm das Passwort eingegeben hätte.
Nutze ich, um den Desktop wieder sichtbar zu machen, nachdem sich jemand via RDP auf einem normalen Desktop-Windows eingeloggt hatte und die Verbindung wieder getrennt hat.
Windows 7 zeigte auf den Sperrbildschirm noch an, wenn jemand eingeloggt ist ... bei Windows 10 sieht du nicht mehr, ob noch jemand verbunden ist und man den rauswirft, wenn man sich anmeldet.

Wie man sich im Support-Modus via RDP von extern einloggen kann, weiß ich leider auch nicht. Also dass wo RDP und Consolen-Nutzer beide das Gleiche sehen ... also um sich von Remote "helfen" zu lassen.

Michael II 19. Sep 2020 07:30

AW: Programm starten ohne Benutzer
 
Was du mit "ohne Benutzer" meinst, weiss ich nicht. Evt. hilft dir Sysinternals Autologon (da musst du aber einen Benutzer angeben ;-)) gepaart mit deinem geplanten Task und entsprechendem Trigger. (Nebenbei: Unter "Dein Scheduled Task > Tab General" kannst du wählen, ob ein Task auch dann gestartet wird, wenn der User nicht eingeloggt ist. Ich nutze diese Option zum Beispiel für automatische Updates.)

generic 19. Sep 2020 09:36

AW: Programm starten ohne Benutzer
 
Via Aufgabenplanung starten lassen, wäre auch noch eine Option.
Es muss ja nicht zeitgesteuert sein, sondern ggf. auf ein Ereignis.

HolgerX 20. Sep 2020 06:11

AW: Programm starten ohne Benutzer
 
Hmm...


Zitat:

Zitat von generic (Beitrag 1473856)
Via Aufgabenplanung starten lassen, wäre auch noch eine Option.
Es muss ja nicht zeitgesteuert sein, sondern ggf. auf ein Ereignis.


Sind die Events in der Aufgabenplanung nicht nur in Verbindung mit einer Anmeldung (Login) verwendbar?
Somit kann die Aufgabenplanung als alternative zum einfachen Autostart verwendet werden.

Jedoch ist dann immer noch eine automatische Anmeldung beim Hochfahren des Rechners notwendig.
Ob dass dann eine UserSession oder KonsolenSession, ist dann egal...

Uwe Raabe 20. Sep 2020 09:19

AW: Programm starten ohne Benutzer
 
Eine Aufgabe kann auch ausgeführt werden, wenn kein Benutzer angemeldet ist. Dann wird aber trotzdem die Aufgabe unter dem dafür eingetragenen Benutzer ausgeführt. Auch bei einem Service muss ja angegeben werden, unter welchem Account er ausgeführt wird.


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