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/)
-   -   Delphi [gelöst] Systemdienst möglichst früh starten (https://www.delphipraxis.net/137710-%5Bgeloest%5D-systemdienst-moeglichst-frueh-starten.html)

Link00y 27. Jul 2009 08:10


[gelöst] Systemdienst möglichst früh starten
 
Hallo Delphianer,

ich schlage mich im Moment auf meinem Laptop mit der Entwicklung eines Delphi-Systemdienstes.

Kurze Erläuterung: auf meiner Arbeit dürfen wir unsere Laptops auf Wunsch verwenden, eine Sache, die mir recht gut gefällt, da man so bequem in eigener Umgebung arbeiten kann. Nur hat bei meinem Laptop sich eine kleine Tücke eingeschlichen: das WLAN muss normalerweise über eine Taste aktiviert werden, diese Taste geht jedoch nur wenn das Programm pm.exe von Fujitsu Siemens (liegt normal im Autostart) läuft. Anmelden an der Firmendomäne ist so nicht möglich, da am Anmelde-Bildschirm pm.exe nicht läuft. Ich habe mich umgesehen und gefunden: findige Linux-Junkies haben die Funktion aus pm.exe dokumentiert um sie bei Linux zu integrieren - ich habe mich rangesetzt und einen WLAN-Activator-Service für Windows gebastelt. Der arbeitet auch, sobald der Dienst läuft, ist die WLAN-Leuchte an.

Jetzt zum Problem: ich kann beim Anmelde-Bildschirm gute 2 bis 3 Minuten warten bis die Leuchte angeht, der Dienst wird mit sehr sehr geringer Priorität scheinbar behandelt. Wenn ich mich fix lokal anmelde werden sogar viele Dinge des Autostarts bevorzugt gestartet.

Wenn ich nun den Service-Start von stAuto auf stSystem (stBoot soll ja laut Windows eher für Dateisysteme und IDE-Treiber dienen und so hoch ist die Priorität nun auch nicht) stelle.. ändert sich nichts (ja ich habe /uninstall und /install neu ausgeführt). Ein Blick in die registry zeigt: HKEY_LOCAL_MACHINE\System\CurrentControlSet\servic es\WLANSrv - Start steht auf 00000002 (Auto).. na gut, stelle ich dies manuell auf 00000001 (System).. Neustart: Erfolg.. der Dienst kann überhaupt nicht gestartet werden - zur Info: der Dienst ist eine EXE-Datei, er sollte keine Abhängigkeiten haben (außer an eine statisch verlinkte DLL) und benötigt keine Interaktion zum Windows-Desktop. Er hat auf seinem "Formular" (oder wie man das nennt) nur einen Timer (dieser dient dazu in regelmäßigen Abständen (5 Sekunden) den Aktivier-Befehl an die Hardware zu senden.. damit auch nach einem Ruhezustand oder Standby-Modus wo die Leuchte wieder ausgeht, der Dienst sie wieder aktiviert).

Tja und jetzt bleibt für mich: Wie kann ich sicherstellen, dass dieser Dienst so früh wie möglich gestartet wird, damit an meinem Laptop so früh wie möglich das WLAN zur Verfügung steht?

Danke schön,

Julian

nahpets 27. Jul 2009 09:07

Re: Systemdienst möglichst früh starten
 
Hallo,

es folgt der Versuch einer Hilfestellung.

Bitte starte mal regedt32.

Dort wechselst Du nach
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
und merkst Dir die erste Zeichenfolge in der dort aufgeführten List(e) (bei meinen Systemen scheint das immer System zu sein).

nun wechselt Du bitte nach
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
und dann zu Deinem Dienst.
Auf der rechten Seite solltest Du dann diverse Einträge finden, wie Start, Type, DisplayName...
U. a. gibt es auch einen Eintrag Group. Sofern nicht vorhanden bitte anlegen und dort die gemerkte Zeichenfolge eintragen.

Damit ist nicht gewährleistet, dass Dein Dienst als erster Dienst startet, aber zumindest in der Gruppe der Systemdienste, die als erstes gestartet werden.

Wenn Du mutig bist:

Ergänze die Liste bei
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
am Anfang durch einen neuen Eintrag, die Du Deinem Dienst bei Group zuweist, damit müsste Dein Dienst dann als erster Dienst gestartet werden.

Ob Dein Rechner damit dann noch startet, weiß ich nicht, es könnte für ihn auch ein finales Ereignis werden :!:

Link00y 27. Jul 2009 09:21

Re: Systemdienst möglichst früh starten
 
Danke schön,

ich habe mir da mir klar war, dass da was in die Hose gehen kann, schon eine Sicherung der Registry in einer Wiederherstellungs-Konsole angelegt. Aber:

Danke schön! Ich habe den Dienst auf System Reserved gesetzt und bereits während der "Windows wird gestartet"-Anzeige ging die WLAN-Leuchte an. Anmeldung an der Domäne war (fast) sofort möglich (erste Eingabe schlug fehl, ich denke aber, dass er einfach noch keine Verbindung zum Router hatte oder noch keine IP per DHCP bekam). Auf jeden Fall: geklappt hat es.

Danke schön!


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