Du kannst dem Service die Parameter für die Kontendaten (Login/Pass) wie nachfolgend im Beispiel aufgeführt übergeben.
Weiss grad nicht, ob der Dienst dazu gestoppt sein muss, ich verwende diese Routine zum Setzen der Werte kurz nach der
eigentlichen Installation. Die Kontenangaben müssen einem gültigen Konto entsprechen.
Delphi-Quellcode:
function ServiceSetLoginPass(const Service, Login, Pass, MachineName:pchar):integer; stdcall;
var
SCMH : SC_HANDLE;
SVCH : CARDINAL;
begin
Result := 0;
if (StrLen(Service) <> 0) then begin
if (MachineName=nil) or (StrLen(MachineName)=0) then
SCMH := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT or GENERIC_READ)
else SCMH := OpenSCManager(MachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT or GENERIC_READ);
if SCMH <> 0 then begin
SVCH := OpenService(SCMH , Service, SERVICE_CHANGE_CONFIG);
if SVCH <> 0 then begin
if ChangeServiceConfig(SVCH , SERVICE_WIN32_OWN_PROCESS (*SERVICE_NO_CHANGE*), SERVICE_NO_CHANGE, SERVICE_NO_CHANGE,
nil, nil, nil, nil, Login, Pass, nil) then
Result := 1;
CloseServiceHandle(SVCH );
end;
CloseServiceHandle(SCMH );
end;
end;
end;