Hallo!
Ich habe aktuell ein kleines Problem einen Dienst ohne Startparameter zu
starten. Leider finde ich den Fehler nicht... Kann mir jemand auf die
Sprünge helfen?
1 | protected override void OnStart(string[] args)
|
2 | {
|
3 |
|
4 | Logwriter.writetoLog("Der Dienst wird gestartet...");
|
5 | const string KeyPath = "HKEY_CURRENT_USER\\SOFTWARE\\TestBridge\\"; //KeyPath wird benötigt, um zu schauen ob der Dienst schon einmal einen alten Startparameter gesetzt bekommen hat
|
6 |
|
7 | //Startparameter auslesen
|
8 | if (!(args == null) ) //Wenn Startparameter angegeben wurden ...
|
9 | {
|
10 | if (System.IO.Directory.Exists(args[0]))
|
11 | {
|
12 |
|
13 | RegistryClass.WriteRegistry(KeyPath, args[0]); //Pfad in Registry speichern
|
14 | Process_Bridge.start(args[0]); //Eigentlichen Dienst starten
|
15 |
|
16 | }
|
17 | else //wenn der Pfad ungültig ist, können wir den Dienst gleich wieder beenden...
|
18 | {
|
19 | OnStop();
|
20 | }
|
21 | }
|
22 | else if (args == null || args.Length == 0) //Wenn keine Startparameter übergeben worden, sollten wir überprüfen, ob der Dienst vielleicht schon einmal gestartet wurde und seinen Path aus der Registry auslesen kann
|
23 | {
|
24 |
|
25 | Process_Bridge.start(@"C:\release test\"); //Wurde nur für Testzwecke verwendet und dafür der eigentliche Code auskommentiert...
|
26 |
|
27 | /*if (RegistryClass.ReadRegistry(KeyPath) == "NULL") //Wenn es auch keinen RegistryKey gibt, Dienst beenden
|
28 | {
|
29 | Logwriter.writetoLog("RegistryKey nicht gefunden");
|
30 | OnStop();
|
31 | }
|
32 | else
|
33 | {
|
34 | Logwriter.writetoLog("Registrykey gefunden: " + RegistryClass.ReadRegistry(KeyPath));
|
35 | Process_Bridge.start(RegistryClass.ReadRegistry(KeyPath)); //ansonsten nehmen wir den bekannten Wert
|
36 | }*/
|
37 | }
|
38 |
|
39 | }
|
Da ich leider keine Fehlermeldung gespuckt bekomme, außer dass der
Dienst beim starten direkt wieder beendet wird, hatte ich vermutet das
der Fehler beim Registrylesen auftritt... Dies ist aber nicht der Fall.
Aber wo ist mein Fehler?
Wenn ich den Dienst allerdings mit Startparameter "C:\release test\"
starte, funktioniert alles wie gewünscht.
Gruß,
Kevin