Hallo,
bei einem Service gibt es die Methode
procedure ServiceBeforeInstall(Sender: TService);
Hier müsstest Du mal probieren, ob Du an Kommandozeilenparameter kommst, ggfls. auch eine INI-Datei lesen, die das Installationsprogramm schreibt, bevor es den Dienst zur Installation aufruft.
Paramstr(0)... sollte aber funktionieren, da diverse Dienste mit Parametern gestartet werden.
Wenn Du ein eigenes Eventmessagefile für Deinen Dienst hast, muss Du dies in der Registrierung eintragen, das geht z. B. so:
Delphi-Quellcode:
// Messagefile registrieren
procedure TReplikator.ServiceBeforeInstall(Sender: TService);
Var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('system\CurrentControlSet\Services\EventLog\Application\' + Self.Name,True);
Reg.WriteString('EventMessageFile',ParamStr(0));
Reg.WriteInteger('TypesSupported',7);
Reg.CloseKey;
Reg.OpenKey('system\CurrentControlSet\Services\Replikator\' + Self.Name,True);
Reg.WriteString('Description','Repliziert die Daten zwischen Asterix und Obelix');
Reg.CloseKey;
Reg.Free;
end;
Wenn wir hier schon in der Registrierung sind:
Auf der gleichen Ebene gibt es für die Dienste, die einen anderen Benutzer verwenden, einen Eintrag "ObjectName", der den Namen des Benutzerkontos enthält. Bei dem Dienst "aspnet_state" ist das z. B. zu sehen.
Hier würde also die Zeile
Reg.WriteString('ObjectName',ParamStr(2));
eventuell schon reichen.
Was ich (noch) nicht herausgefunden habe, ist, wird das Passwort gespeichert, wenn ja wo und wie?
Reicht es eventuell aus, dass in der Systemsteuerung beim Eintragen der Anmeldung das richtige Passwort eingegeben wird? (Wäre wohl etwas zu billig.)
Eventuell wirst Du hierzu ja bei
MSDN oder so fündig.
Stephan