leknilk0815
Goto Top

Programm beim Beenden eines Dienstes ausführen

Es soll beim Beenden eines Dienstes eine Anwendung beendet werden

Servus,
kann man beim Beenden eines Dienstes ein Programm (Batch) ausführen lassen, ähnlich einem Programm, das durch diesen Dienst gestartet wird?
Hintergrund:
Ich habe mittels "srvany" einen Dienst erstellt, welcher mir über eine Batch ein Programm startet (anders gehts leider nicht, die Batch MUSS sein). Wenn ich nun den Dienst beende, wird nur die Batch beendet, das Programm läuft weiter (logisch...).
Wenn man nun dem Dienst beibringen könnte, daß er beim Beenden noch eine andere Batch aufruft (Inhalt: KILL- Befehl für das Programm), wäre mein Problem gelöst.

Geht das irgendwie???

Danke!

Content-ID: 77235

Url: https://administrator.de/contentid/77235

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

chmu-xp
chmu-xp 04.01.2008 um 17:19:22 Uhr
Goto Top
Hi,

ich habe das mit folgendem VBS-Script gemacht (der Ursprung stammt hier aus dem Forum - vielen Dank nochmals an den eigentlichen Verfasser / habe es ein bisschen angepaßt):


sProcessName = "Programm.exe"  
sProcessName2 = "Actsrvnt.exe"  
sProcessName3 = "TM_A.exe"           
' Hier den Prozeß des Programms aus (siehe Taskmanager) angeben  

sComputer = "."     
Set oWmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")  

Dim oShell
Set oShell = WScript.CreateObject("WScript.Shell")  

Do
  Set colProcessList = oWmi.ExecQuery("Select * from Win32_Process Where Name = '" & sProcessName & "'")  
  Set colProcessList2 = oWmi.ExecQuery("Select * from Win32_Process Where Name = '" & sProcessName2 & "'")  
  Set colProcessList3 = oWmi.ExecQuery("Select * from Win32_Process Where Name = '" & sProcessName3 & "'")  

  If colProcessList.Count = 0 Then
     oShell.Run "C:\Programme\watchdog\warn_programm.cmd", 1, False     
     ' Hier den Pfad und die Btach angeben  
End If

  If colProcessList2.Count = 0 Then
     oShell.Run "C:\Programme\watchdog\warn_faxsrv.cmd", 1, False     
     ' Hier den Pfad und die Btach angeben  

End If

  If colProcessList3.Count = 0 Then
     oShell.Run "C:\Programme\watchdog\warn_talkm.cmd", 1, False     
     ' Hier den Pfad und die Btach angeben  

  End If

  WScript.Sleep 5 * 60 * 1000       
  ' Hier kann die Wartezeit bis zur nächsten Prüfung eingestellt werden. Standard: 5 min  
Loop

Wenn das Programm nicht mehr läuft, wird die entsprechene Batch aufgerufen (bei mir wird mittels BLAT eine entsprechende eMail versendet).


Grüße

Christian
leknilk0815
leknilk0815 04.01.2008 um 17:53:19 Uhr
Goto Top
Danke,
das wäre aber "mit Kanonen auf Spatzen schießen".
Für Überwachungszwecke sicher gut, für mich zu aufwändig, da es ja nur drum geht, ein übriggebliebenes Programm zu beenden, was ohnehin nur vorkommt, wenn man ohnehin "schraubt".
Ich hätte halt gedacht, daß man dem Dienst einen Reg- Parameter mitgibt und gut...

Vielleicht weiß ja noch einer was...

Auf jeden Fall danke für die Mühe!
skorpy11
skorpy11 15.08.2014 um 16:10:50 Uhr
Goto Top
Hallo,

ich habe die gleiche Problematik, dass die Exe weiterläuft.
Gab es oder gibt es eine Lösung?