![]() |
Re: Dienst installieren + unter anderen Benutzerdaten starte
Zitat:
|
Re: Dienst installieren + unter anderen Benutzerdaten starte
Zitat:
Ich hatte bereits geschrieben, dass mein Programm auf Benutzereingaben angewiesen ist. Ich möchte ständig ein Verzeichnis auf Dateien prüfen. Sind welche da, kommt ein Fenster, dass dem Benutzer das Sortieren und ablegen ermöglicht. Anschließend wird es wieder geschlossen. Ohne angemeldeten Benutzer ist das sinnlos. Ich fand es nur unter dem Gesichtspunkt "dümmster anzunehmender User" gut, dass man an Diensten nicht so leicht manipulieren kann und den meisten Benutzern der Schalter /uninstall zum Deinstallieren doch nicht bekannt ist. |
Re: Dienst installieren + unter anderen Benutzerdaten starte
Hallo,
unter Deinem letzten Gesichtpunkt: Wenn der Dienst nur laufen soll, wenn ein Benutzer angemeldet ist und mit dessen Rechten, dann installiere den Dienst wie gehabt und starte ihn (per Batch?) über den Run-Zweig mit net start meindienst. Wenn Du den Run-Zweig von Local-Machine nimmst, startet der Dienst bei jedem Benutzer und den Zweig kann nicht jeder Benutzer manipulieren (wenn die Rechte stimmen). Wenn der Dienst dann einmal läuft, dann läuft er auch bei abgemeldetem Benutzer weiter, bis zum Runterfahren des Systems. Stephan PS: Drei Sätze und alle fangen mit Wenn an, das ist jetzt aber keine stilistische Glanzleistung :oops: |
Re: Dienst installieren + unter anderen Benutzerdaten starte
Zitat:
Zitat:
Zitat:
Alex P.S. Das mit den 3 "Wenn(s)" ist OK. Ich will was lernen. Aber ganz bestimmt nicht Deutsch. Das wäre dann das falsche Forum. :-D |
Re: Dienst installieren + unter anderen Benutzerdaten starte
Hallo,
auf der Kommandozeile kannst Du Dienste auch von "Hand" starten.
Delphi-Quellcode:
startet Deinen Dienst.
net start deindienstname
Delphi-Quellcode:
beendet ihn wieder.
net stop deindienstname
Dienste über die Registierung zu starten ist ein Weg, aber nicht der Einzige. Es ginge auch über die Windows-API. Wenn ich Dienste entwickle, dann teste ich immer über 'ne Batch, geht einfach schneller als über die Systemsteuerung. Im Batch kann ich halt vorher auch noch Dateien an die entsprechenden Stellen kopieren oder das install bzw. das uninstall mit aufnehmen. Bin da halt faul. Neben dem Run-Zweig wäre auch die Autostart noch eine Option. Deine Batchdatei, die Du im RUN-Zweig aufrufst, muss nur
Delphi-Quellcode:
enthalten, eventuell reicht in der Registrieung aber auch sowas:
net start Dienstname
Delphi-Quellcode:
Einfach mal ausprobieren, einer der beiden Wege sollte für Deinen Bedarf ausreichen.
"MeinenDienstStarten"="net start MeinDienst"
Stephan |
Re: Dienst installieren + unter anderen Benutzerdaten starte
Hallo,
mir fällt da gerade noch was ein: Parallel zu Run gibt es auch noch RunServices. Der funktioniert auch ohne Benutzeranmeldung (aber da fehlt Dir dann wohl die passende Anmeldung). ![]() Stephan |
Re: Dienst installieren + unter anderen Benutzerdaten starte
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz