AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Laufende Dienste abfragen (lokal und Netzwerk?)
Thema durchsuchen
Ansicht
Themen-Optionen

Laufende Dienste abfragen (lokal und Netzwerk?)

Ein Thema von stho · begonnen am 23. Sep 2009 · letzter Beitrag vom 24. Sep 2009
Antwort Antwort
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#1

Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 23. Sep 2009, 20:51
Hallo Leute

Ich hätte da mal eine Frage:

1. Kann man den Zustand eines Dienstes von einem lokalen Computer abfragen?
2. Kann man übers Netzwerk abfragen ob ein Computer den Nachrichtendienst aktiviert/deaktiviert hat?

Es geht bei Punkt 2 NUR um das auslesen. Bei Punk 1 vielleicht auch um das deaktivieren/aktivieren


Ihr habt es sicher schon erraten, es soll ein Net-Send-Proggi werden.

ich habe zwar schon im Forum geguckt und Google genutzt doch leider bin ich auf nichts passendes gestoßen.

Bitte ein Tipp von eurer Seite, das währe hilfreich





Vielen Dank schonmal


EDIT:
Bin morgen erst wieder on um zu antworten.
Bis dahin: Gute Nacht und schlaft gut...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 23. Sep 2009, 20:54
Net help services / net start / net stop
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 23. Sep 2009, 21:11
Dienste auflisten: http://www.michael-puff.de/Developer...Services.shtml

Und im Anhang meine NetSend Klasse.

Allerdings würde ich mir eine andere Art der Kommunikation überlegen. Seit XP SP2 ist der Dienst deaktiviert und ab Vista gibt es ihn nicht mehr.
Angehängte Dateien
Dateityp: pas netsendclass_932.pas (10,4 KB, 10x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 24. Sep 2009, 10:54
hm... ich bedanke mich schonmal für die ausführliche Antwort

Jedoch gestaltet sich das Verstehen dieses Textes als ziemlich schwer Auch ein EInbauen in mein Programm war nicht möglich da es mir einige Fehler ausgeschmissen hat...

Naja, ich werd mir den Link zu dem Thread mal speichern und versuchen in den Nächsten Wochen / Monaten das ganze nach zu lernen um dann zu vertstegen was du da macht.



Vielen Dank trotzdem
Liebe Grüße
stho
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 24. Sep 2009, 11:50
Hallo,

schau Dir bitte mal das da an: ServiceManager. Wenn ich das recht verstehe, handelt es sich um eine Klasse, mit der Du den Zustand eines Dienstes auf einem "beliebigen" Rechner abfragen kannst und den Zustand auch ändern kannst. Es ist damit z. B. möglich, remote auf einem anderen Rechner Dienste zu überwachen und ggfls. gestoppte Dienste wieder zu starten.

ein Auszug aus der Benutzung dieser Klasse:
Delphi-Quellcode:
...
Try
  ServiceManager.MachineName := '\\' + sServer; // Servername
  ServiceManager.ServiceName := sl[k]; // Liste der Dienste, die geprüft werden sollen
  iError := 0;
  Repeat
    Inc(iError);
  Until ServiceManager.Open or (iError >= 3);
  iError := 0;
  Repeat
    Inc(iError);
  Until (ServiceManager.State <> 0) or (iError >= 3);
  Case ServiceManager.State Of
    SERVICE_RUNNING : sColor := sEvenOdd; // Status ist okay.
    SERVICE_START_PENDING,
    SERVICE_CONTINUE_PENDING : sColor := ' class="yellow" '; // Status wird vermutlich in Kürze okay sein.
    SERVICE_STOP_PENDING,
    SERVICE_PAUSE_PENDING : Begin // Status muß geändert werden.
                                     // Hier müssen wir warten, bis Service angehalten bzw. beendet wurde.
                                 sColor := ' class="red" ';
                                 bMailIt := True;
                               End;
    SERVICE_STOPPED : Begin // Status muß geändert werden.
                                 If Not ServiceManager.Start Then Begin
                                   sColor := ' class="red" ';
                                 End;
                                 Case ServiceManager.State Of
                                   SERVICE_RUNNING : Begin
                                                       sColor := ' class="yellow" '; // Status ist okay.
                                                       bMailIt := True;
                                                     end;
                                 else begin
                                     sColor := 'class="red"';
                                     slSSI.Add('<tr><th ' + sColor + ' colspan="5">
                                            + 'Service konnte nicht gestartet werden?' + '</th></tr>');
                                     bMailIt := True;
                                   end;
                                 end;
                               End;
    SERVICE_PAUSED : Begin // Status muß geändert werden.
                                 sColor := ' class="red" ';
                                 ServiceManager.Continue;
                                 iError := 0;
                                 while ServiceManager.IsPending
                                 and (iError < 30) do Begin // bis zu 15 Sekunden auf den Start warten
                                   Sleep(500);
                                   Inc(iError);
                                 end;
                                 Case ServiceManager.State Of
                                   SERVICE_RUNNING : sColor := ''; // Status ist okay.
                                 else
                                   bMailIt := True;
                                 end;
                               End;
  Else
    sColor := ' class="red" '; // Status muß durch Anwender geprüft werden.
    bMailIt := True;
  End;
  ServiceManager.Close;
Except
  On e : Exception Do Begin
    ErrorLog(tmDienste.Name + ' Exception: ' + e.Message,0);
  End;
End;
...
Der Codeausschnitt ist so nicht zu verwenden, er dient nur als "Ideenlieferant". Er wird in einem Dienst benutzt, der zur Serverüberwachung u. a. das Laufen definierter Dienste prüft und ggfls. die Dienste neu startet bzw. im Fehlerfalle per Mail den Admin benachrichtigt. Der Dienst läuft auf mehreren Servern, die sich so gegenseitig überwachen.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Laufende Dienste abfragen (lokal und Netzwerk?)

  Alt 24. Sep 2009, 13:40
Nun, es ist wirklich nett von dir und deinen Eifer kann man nur bewundern

Aber da ich ein Delphi-Anfänger mit 8 Wochen Erfahrung bin kann ich deinen Text genau so gut lesen wie meine Schwester (4 Jahre alt)... 8)

Liebe Grüße
stho
  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 01:36 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