Hallo zusammen !
Ich brauche dringend einen Rat warum das was ich mir ausgedacht habe nicht funktioniert.
Ich habe mich zwar schon ziemlich weit durchgebissen, die letzte Erkenntnis ist aber leider (noch) ausgeblieben.
Kurze Beschreibung meines Vorhabens :
1) Ein
Dienst, der ein bestimmtes "Gerät" (genauer wäre zu langwierig) bedient.
Es kann an einem Computer mehrere angeschlossene Geräte geben.
Für jedes Gerät soll der
Dienst mit unterschiedlichen Übergabeparametern erneut gestartet werden können. Der
Dienst ist fertig, startet, stoppt binnen Sekunden und tut genau das, was ich erwarte.
2) Ein Konfigurationsprogramm, mit dem für jedes Gerät dynamisch eine Konfiguration erzeugt wird und ein neuer Dienstname dafür vergeben wird. Dieser Name wird verwendet um über CreateService() einen neuen Eintrag für den
Dienst in der Registry mit unterschiedlichen Parametern anzugelegen.
Jetzt kommt das Problem :
Wenn ich aus dem Konfigurationsprogramm heraus der CreateService()-Funktion als lpServiceName den Namen übergebe, der
im Dienst unter TService.Name steht, funktioniert alles bestens. Um den
Dienst mehrfach mit unterschiedlichen Parametern starten zu können, braucht jede Instanz einen eigenen "Block" in der Registry unter einem neuen Namen.
Und daran scheitert es !!!!
Der gesamte Registryblock wird mit allen Schlüsseln und Werten unter diesem Namen zwar angelegt, der
Dienst lässt sich aber nicht starten.

In der Dienste-Verwaltung steht als Status "wird gestartet", aber es passiert nichts weiter.
Ich habe auch schon versucht den
Dienst unter dem neuen Namen über die Kommandozeilentools instserv.exe, scmgr.exe und sc.exe zu registrieren, aber das Verhalten ist das selbe! Der
Dienst startet unter dem neuen Namen einfach nicht richtig ! Es liegt also nicht am Aufruf aus meinem Konfigurationsprogramm. Keine Fehlermeldung, kein Eintrag im Ereignisprotokoll ! Echt frustrierend !
Was passt hier nicht ?? Es kann nur eine Kleinigkeit sein und ich komme einfach nicht drauf !
Ein hilfesuchender Gruß
Stefan