AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Dienste Remote Starten u. Beenden, Rechte?
Thema durchsuchen
Ansicht
Themen-Optionen

Dienste Remote Starten u. Beenden, Rechte?

Ein Thema von Jumpy · begonnen am 23. Jul 2012 · letzter Beitrag vom 25. Jul 2012
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Dienste Remote Starten u. Beenden, Rechte?

  Alt 23. Jul 2012, 11:57
Hallo,

mein Programm soll einen bestimmten Dienst, der auf mehreren Servern läuft beenden und später auch wieder starten können.

In der DP hab ich u.a. dieses (und Varianten) dazu gefunden und würd das gerne einstzen:
Dienst/Service starten, stoppen oder Status abfragen

Ich hab dazu aber ein paar Fragen:
1) Machine soll als UNC path angegeben werden, bzw. ganz unten steht was von Name der Machine: Geht das auch über die IP-Adresse irgendwie?

2) Mit welchen Rechten muss mein Programm den laufen, damit es auf einem anderen Rechner/Server Dienste starten und stoppen kann? Mit einem Domöne-User der Adminrechte auf dem Rechner hat, auf dem die Dienste gestartet und gestoppt werden sollen?
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 23. Jul 2012, 12:02
Das hat eher mit den Rechten desjenigen zu tun, welcher die Dienste remote steuren möchte
Markus Kinzler
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 23. Jul 2012, 14:22
Das Programm soll auf einem anderen Server laufen als geplante Task. Diese könnte ich mit "irgendeinem" User anlegen und starten lassen. Muss ich dafür einen Domän-Admin-User nehmen (der auch auf den Servern mit den Diensten Admin ist), damit das Programm dort die Dienste starten usw. kann?
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 23. Jul 2012, 19:22
Hallo,

muss es unbedingt per Programm sein oder reicht auch eine Batchdatei?

Wenn eine Batchdatei ausreicht, schau Dir bitte mal das Kommandozeilenprogramm sc an.

Mit sc /? bekommst Du eine ausführliche Hilfe.

Bei den Rechten wirst Du die aus Deiner 2. Alternative benötigen. Der Benutzter, mit dem Du Dein Programm oder die Batchdatei startest muss auf dem Zielrechner, auf dem der Dienst läuft, das Recht zum Starten oder Stoppen des Dienstes haben. Ggfls. einen entsprechenden Nutzer einrichten, der genau dieses Recht zugewiesen bekommt, damit Du keinen "globalgalaktischen" Administratortask einrichten musst, der alles darf. Task mit Adminrechten in der gesamten Domäne richte ich nur ungern ein, da man sie ggfls. durch Manipulation einer Batchdatei missbrauchen kann. Meine Devise lautet da: Sowenig Rechte wie möglich.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 24. Jul 2012, 07:08
Das Programm soll auf einem anderen Server laufen als geplante Task. Diese könnte ich mit "irgendeinem" User anlegen und starten lassen. Muss ich dafür einen Domän-Admin-User nehmen (der auch auf den Servern mit den Diensten Admin ist), damit das Programm dort die Dienste starten usw. kann?
Das Recht zum starten von Diensten hat auch der lokale Administrator, und es kann auch ein normales Domänenkonto lokale Admin Rechte erhalten.

Eine neuere Methode ist Windows Management Instrumentation (WMI), das bei entsprechender Konfiguration und Zugriffsrechten über das Netzwerk verwendet werden kann. WMI arbeitet mit SQL-ähnlichen Befehlen wie
Code:
SELECT * FROM Win32_Service
Speziell für Delphi gibt es einen kostenlosen WMI - Quelltextgenerator. Wenn der Code einmal erstellt ist, kann man ihn per Copy-Paste ins das eigene Modul übernehmen (benötigt den Generator also nicht zur Laufzeit). Der generierte Code ist kompatibel mit Delphi 7, 2005, BDS/Turbo 2006 und RAD Studio 2007, 2009, 2010, XE, XE2.

Zu jedem Service würde man dann ein Objekt haben, und kann im Fall eines Win32 Service dann dessen StartService Methode aufrufen.

MSDN Seite zu Win32_Service.StartService: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Die Homepage ist hier:

WMI Delphi Code Creator

Und auf Google Code das Projekt:

http://code.google.com/p/wmi-delphi-code-creator/
Michael Justin
habarisoft.com

Geändert von mjustin (24. Jul 2012 um 07:17 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 24. Jul 2012, 08:50
@nahpets:
Es muss ein Programm sein. Vllt. kurz zum Hintergrund. Es laufen einige Web-Server auf denen ein bestimmter Portal-Dienst läuft. Der muss gelegentlich ab- und wieder angeschaltet werden können. Dafür soll es ein "Verwaltungsprogramm" geben.

Da die Webserver vom internen Netz aus hinter einer Firewall liegen ist ein Progamm, dass auf jedem Mitarbeiter-Rechner im Netz laufen kann schlecht, da dann für diesen Rechner ein Durchgang durch die Firewall freigeschaltet werden müsste.
Also soll auf den Arbeitsplatzrechnern nur ein Client-Programm entstehen. Auf einem Server soll ein Server-Programm sein, über das die Clients arbeiten können. Nur für das Server-Programm bzw. den Server gibt es nun einen Weg durch die Firewall zu den Webservern um dort die Dineste ein-/auszuschalten.

@mjustin:
Muss ich mich mal einlesen, klingt interessant.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 25. Jul 2012, 03:25
Also soll auf den Arbeitsplatzrechnern nur ein Client-Programm entstehen. Auf einem Server soll ein Server-Programm sein, über das die Clients arbeiten können. Nur für das Server-Programm bzw. den Server gibt es nun einen Weg durch die Firewall zu den Webservern um dort die Dineste ein-/auszuschalten.
Wie wäre es, wenn du auf den Servern einen Secure Shell Dienst (z.B. http://www.freesshd.com/) installieren würdest und auf den Clients einen Secure Shell Client (z.B. Putty)?
Dann kannst du Scriptgesteuert die SC.exe - Befehle zum Stoppen oder Starten der anderen Dienste absetzen.
Programmieraufwand im Prinzip gleich Null; du musst nur den Port 22 in der Firewall öffnen und dir Gedanken darüber machen, ob jemand auf den Clients die Secure Shell missbrauchen könnte.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Dienste Remote Starten u. Beenden, Rechte?

  Alt 25. Jul 2012, 11:46
Hallo,

wenn Du ein explizites Programm benötigst, so spricht nichts dagegen aus diesem heraus SC als Konsolenprogramm aufzurufen. Über die JVCL (http://wiki.delphi-jedi.org/wiki/JVC...vCreateProcess) sollte das gehen und (vermutlich) kannst Du dort auch einem Benutzer noch explizite Rechte angeben. Ansonsten such' bitte mal hier und anderswo nach CreateProcess, CreateProcessAsUser....

Dies hätte den Vorteil, dass nicht einmal Dein Serverprogramm das Recht zum Starten und Stoppen von Diensten haben muss, sondern Du (per Konfiguration?) nur dem Aufruf von SC die benötigten Anmeldedaten/Rechte zuweist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz