PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WindowsLogon: Warten bis Service initialisiert worden ist?


Mr. Lolman
2017-07-10, 10:08:47
Kennt jemand eine Möglichkeit, wie man den Logonscreen für Windows so lange unterdrücken kann, bis ein bestimmtes Service fertig initialisiert wurde? Konkret geht es ums Oracle Datenbankservice.

Das Problem ist, dass neuere Windowse immer schneller booten und Logins schon zulassen, bevor alle Services fertig initialisiert wurden

Wenn unsere Kunden gleich nach dem Login unsere Software startet und die das (fürs Backup notwendige, nur auf manchen Clients verfügbare Oracleservice ) nicht finden - weil die initialisierung noch nicht abgeschlossen ist - erzeugt unsere Software eine Fehlermeldung, und schreibt einen Protokolleintrag. Natürlich könnte man das theoretisch auch direkt über die Software steuern, aber evtl geht das ja auch ganz angenehm mit einer Grouppolicy...

Hat irgendjemand eine Idee dazu?

Ectoplasma
2017-07-10, 12:06:21
Das Problem ist, dass neuere Windowse immer schneller booten und Logins schon zulassen, bevor alle Services fertig initialisiert wurden.

Das war schon immer so, man hat das nur immer mehr optimiert.

Aber zum Problem. Eigentlich hast du nicht viele Optionen. Persönlich würde ich das über eure Software machen. Ansonsten gibt es noch die Möglichkeit in der Registry einen entsprechenden Service Dependency Eintrag zu erstellen. D.h., dass der Logon-Service auf den Oracle Service warten muss. Eine Lösung über die Group-Policy kenne ich nicht.

Aber wie gesagt, ich würde dringend von solchen Lösungen abraten. Wenn der Oracle-Service z.B. aus irgendwelchen Gründen mal "klemmt", wird sich das System beim Logon sicherlich seltsam verhalten. Oder was ist, wenn der Oracle-Service deinsatlliert werden muss. Wer macht die Einträge in der Registry oder den Group-Policies wieder rückgängig?

Monger
2017-07-10, 15:15:37
Die weniger dreckige Lösung wäre deine Applikation so lange warten zu lassen bis der Service hochgefahren ist:
https://superuser.com/questions/917946/make-batch-file-wait-for-service-to-start-when-restarting-services

Der Service Scheduler von Windows ist ne Wissenschaft für sich, und MS macht ganz bewusst keine Aussage dazu wann services genau gestartet werden - das ist nunmal Sache des Betriebssystem

Mr. Lolman
2017-07-11, 11:49:55
Alles klar. Besten Dank für den Input, wir werden das wohl wirklich über unsere Software lösen...

Dr.Doom
2017-07-12, 21:43:29
Etwas ähnliches hatten wir mal in Verbindung mit dem National Instrument DAQmx-Gelumpe, das noch nicht fertig initialisiert war, wenn der Benutzer sich schon längst angmeldet und die Messapplikation gestartet hatte (Fehler, nix Hardware da). Die vom Kunden bevorzugte Lösung bestand darin, das Hintergrundbild von Windows auszutauschen, und so dem Benutzer des Rechners per "Text im Bild" anzuzeigen, die Messapp erst nach einer kurzen Wartezeit zu starten. :ulol:
Immerhin ein MT Arbeit bezahlt bekommen für's Paint öffnen. :freak:

Joe
2017-07-15, 19:41:25
Alles klar. Besten Dank für den Input, wir werden das wohl wirklich über unsere Software lösen...

Keine Ahnung ob das funktioniert, nur son Gedankengang.
Es gibt in der Windows Welt eine Reihe von GPOs, die den Anmeldevorgang blockieren bis X passiert ist z.B.

Always wait for the network at computer startup and logon

Vielleicht kannst Du dich da irgendwie dran hängen. z.B. in dem Du den Service blockierst bis Deiner gestartet ist.

Außerdem kann man User natürlich künstlich bremsen z.B. indem sie jedes mal ihren Username eingeben müssen, oder vorher noch STRG+Alt+Entf. drücken müssen damit der Anmeldebildschirm überhaupt kommt.

Winnie
2017-07-15, 23:10:23
while((Get-Service -name "spooler").Status -ne "Running")
{
write-host "Bitte warten, Service startet..."
start-sleep -s 1
}

write-host "Anwendung wird gestartet..."



Ich würde Eure Software einfach über dieses Powershell-Skript starten...

Monger
2017-07-16, 00:20:59
Keine Ahnung ob das funktioniert, nur son Gedankengang.
Es gibt in der Windows Welt eine Reihe von GPOs, die den Anmeldevorgang blockieren bis X passiert ist z.B.

Vielleicht kannst Du dich da irgendwie dran hängen. z.B. in dem Du den Service blockierst bis Deiner gestartet ist.



Ich hoffe, dass für diese Vorschläge für dich ein ganz besonderer Kreis der Hölle reserviert ist. Das ist so als ob du ein Tempolimit durchsetzen würdest indem du die Reifen zerstichst.

Joe
2017-07-16, 20:22:35
:comfort:

Exxtreme
2017-07-17, 11:15:57
Monger hat IMHO schon recht. In den Bootvorgang von Windows würde ich auf keinen Fall eingreifen. Das kann schnell ins Auge gehen und dann bootet die Installation nicht mehr etc.

Monger
2017-07-17, 19:16:21
Selbst wenn es funktioniert, ist es dreckig. Extra den Rechner bremsen, nur weil die eigene Anwendung ihre Startprobleme hat... das ist gestohlene Arbeitszeit. Bis der Datenbank Client hochfährt, könnte der Anwender ja locker Mails lesen, sich ein paar Notizen machen, ein bisschen im Internet recherchieren oder sonstwas irgendwas produktives an dem Rechner tun. Ist ja nicht so als ob auf dem System nichts anderes laufen würde als die eigene Anwendung.

Ectoplasma
2017-07-19, 15:50:55
Wurde doch schon alles in den ersten zwei Antworten geschrieben.