Einzelnen Beitrag anzeigen

Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Dienst installieren + unter anderen Benutzerdaten starte

  Alt 18. Sep 2008, 14:28
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;
Gruss Gremlin
  Mit Zitat antworten Zitat