Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fragen zu Diensten (starten, beenden, registrieren, Rechte) (https://www.delphipraxis.net/55848-fragen-zu-diensten-starten-beenden-registrieren-rechte.html)

rainerkunze124 27. Okt 2005 21:31


Fragen zu Diensten (starten, beenden, registrieren, Rechte)
 
Ich habe folgendes Szenario:

Auf einem Rechner im Netzwerk läuft ein registrierter System-Dienst (automatisch). Nun möchte ich bei einer neuen Version des Dienstes dem alten per Netzwerk einen Befehl senden, er solle sich mal die Datei xyz.exe besorgen, diese ins Verzeichnis xy kopieren und dann:
1. diese Datei xyz.exe als System-Service registrieren (sollte der bestehende Dienst doch eigentlich können, da er selbst System ist)
2. die Starteinstellung des Dienstes xyz auf automatisch setzen
3. den Dienst starten.
4. Anschließend beendet der neue Dienst den alten, deregistriert diesen und löscht die Datei des alten Dienstes.

Habe noch nichts vernünftiges an Code gefunden, um 1-4 durchzuführen. Daher wäre ich dankbar, wenn ihr mir helfen könntet ;-)
Bin noch nicht in die WMI o.ä. eingedrungen und wäre dankbar für Codehäppchen zu Punkt 1-4 :-D

Und noch eine Frage liegt mir auf der Zunge:
Was kann ein Dienst?
Kann er
A. auf Methoden zugreifen, die mit der Windows Oberfläche zu tun haben (z.B. Mausposition ändern)?
B. auf Methoden zugreifen wie Kopieren von Dateien oder Ausführen von anderen Dateien?
C. als System-Dienst uneingeschränkt auf die Registry zugreifen?

Vielen Dank für eure Hilfe,

Rainer

Olli 1. Jun 2006 01:15

Re: Fragen zu Diensten (starten, beenden, registrieren, Rech
 
Zitat:

Zitat von rainerkunze124
Auf einem Rechner im Netzwerk läuft ein registrierter System-Dienst (automatisch). Nun möchte ich bei einer neuen Version des Dienstes dem alten per Netzwerk einen Befehl senden, er solle sich mal die Datei xyz.exe besorgen, diese ins Verzeichnis xy kopieren und dann:
1. diese Datei xyz.exe als System-Service registrieren (sollte der bestehende Dienst doch eigentlich können, da er selbst System ist)
2. die Starteinstellung des Dienstes xyz auf automatisch setzen
3. den Dienst starten.
4. Anschließend beendet der neue Dienst den alten, deregistriert diesen und löscht die Datei des alten Dienstes.

Das Problem dürften hier die Netzwerkrechte sein, bei denen SYSTEM sehr beschnitten ist. Es ist aber prinzipiell möglich, daß ein Programm (auch Dienst) mit entsprechenden Rechten auf einem entfernten Rechner ein Share erstellt und dort etwas hinkopiert. Einziges Problem für dich wäre vermutlich, daß du eine Datei in Benutzung nicht überschreiben kannst ;)

Zitat:

Zitat von rainerkunze124
A. auf Methoden zugreifen, die mit der Windows Oberfläche zu tun haben (z.B. Mausposition ändern)?

Bedingt, wenn du auf dem richtigen Desktop unterwegs bist.

Zitat:

Zitat von rainerkunze124
B. auf Methoden zugreifen wie Kopieren von Dateien oder Ausführen von anderen Dateien?

Ja natürlich, du bist als Dienst im Win32-Subsystem unterwegs.

Zitat:

Zitat von rainerkunze124
C. als System-Dienst uneingeschränkt auf die Registry zugreifen?

Nein, du bist den selben Einschränkungen unterworfen wie du es unter jedem beliebigen Account auch bist, der als der Benutzer läuft unter dem der Dienst läuft. Auch SYSTEM hat nicht überall zwangsläufig uneingeschränkten Zugriff.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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