Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Service neustarten, aber wie? (https://www.delphipraxis.net/20158-service-neustarten-aber-wie.html)

JamesBlond 14. Apr 2004 09:52


Service neustarten, aber wie?
 
Hallo!
Gibt es eine möglichkeit, einen Service über die Kommandozeile o.ä. neu zu starten?
Habe einen Service geschrieben, der sich aber alle ca. 96 Std. neu starten sollte, um den nicht mehr benötigten Speicher freizugeben. Gibt's da ne Möglichkeit?
Danke!

Gruß

Matthias

Domo Sokrat 14. Apr 2004 09:59

Re: Service neustarten, aber wie?
 
Hi,

Services startest Du (unter NT/W2K/XP) von der Commandline mit

Code:
NET START [Service]
Sind Leerzeichen im Servicenamen, dann muss dieser in Anführungszeichen gesetzt werden.

Beispiel:
Code:
NET START "Remote Procedure Call (RPC) Service"

JamesBlond 14. Apr 2004 10:02

Re: Service neustarten, aber wie?
 
Hi!
Danke!
Aber gibt's da nicht ne Möglichkeit, den Service direkt neu zu starten, also irgendwas in die Richtung:
net restart Servicename

??

Gruß

Matthias

Domo Sokrat 14. Apr 2004 10:20

Re: Service neustarten, aber wie?
 
Hmm, wäre bestimmt 'ne nette Erweiterung für NET START. Aber solch eine Möglichkeit ist mir nicht geläufig. Ich glaub' da müsstest Du schon was entsprechendes schrauben... Vielleicht gibt's da aber auch schon was von "Freeware" oder so. Google doch einfach mal.

JamesBlond 14. Apr 2004 10:55

Re: Service neustarten, aber wie?
 
Kann ich denn aus einem Service heraus eine Batch-Datei ausführen?
Habe es bei mir so versucht:

Delphi-Quellcode:
ShellExecute(0, 'open', PChar('test.bat'), nil, nil, SW_HIDE);
Aber das funktioniert irgendwie nicht. Wo ist da mein Fehler, oder kann ich von einem Service aus gar keine Batch-Datei ausführen?
Danke!
Gruß

Matthias

APP 14. Apr 2004 12:44

Re: Service neustarten, aber wie?
 
Hallo Matthias,
Bat-Dateien im Service funktionieren schon, allerdings ist die Frage,
was in der Bat-Datei "drinnen" ist.
Ein Service läuft in einem eigenen unsichtbaren Desktop im System-Kontext,
wenn Deine Bat-Datei nun ein Programm mit Gui startet wirst Du es nie
zu sehen bekommen.

Außerdem empfehle ich Dir, in Verbindung mit ShellExecute immer mit der
vollen Pfadangabe zu arbeiten.

Zum Debuggen Deines Services (z.B. Rückgabewert von ShellExecute anzeigen)
versuche mal Sakuras:

Delphi-Quellcode:
PROCEDURE DebugMsgBox(aMsgStr: AnsiString);
// (c) Sakura
// MessageBox aus non-interactive Anwendungen (z.B. Services, COM-Server,...)
BEGIN
  MessageBox(0, PAnsiChar(aMsgStr), PAnsiChar('DebugMessage from: ' +
    srvFLAPPService.DisplayName), MB_OK + MB_TOPMOST + MB_SERVICE_NOTIFICATION);
END;
[EDIT]
Wenn Du ein Service neustarten möchtest, kannst Du Dir dazu ja selbst eine kleine
Applikation schreiben. Sakura hat die fertige Tool-Sammlung uNTServiceControl.pas in diesem Thread gepostet.
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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-2025 by Thomas Breitkreuz