Dienst stoppen. Ist das Möglich?

  • hi,

    ich bin gerade an einer deinstallationsroutine dran, jetzt müsste ich vor der deinstallation den Dienst beenden kann man dies irgendtwie lösen?

    lg
    Marc

  • mit der "ServiceControl.au3" welche du hier im Forum findest, kannst du Services stoppen und starten

    3 Mal editiert, zuletzt von bankrupty (9. März 2007 um 12:22)

  • Hi

    :hm:also da die meisten dienste werden im taskmanager aufgeführt also solltest du dir ma inder hilfe von autoit den befehl processclose angucken!

    aber wenn du genauere hilfe benötigst solltest du dein problem ein wenig näher beschreiben!

    mfg DjBasslord

    Einmal editiert, zuletzt von DjBasslord (9. März 2007 um 15:49)

  • Danke, das war schon genau das was ich gesucht habe, werde damit mal rum testen...

    Viele Grüße
    Marc

  • Ich hatte jetzt auch mal das Problem, einen Dienst benden zu müssen und bin mit dieser Lösung ans Ziel gekommen.
    Vielleicht kann das ja jemand gebrauchen :)

    [autoit]

    ; Sicherheitscenter beenden
    Run(@ComSpec & " /c " & 'sc stop wscsvc', "", @SW_HIDE)
    ...
    ...
    Run(@ComSpec & " /c " & 'sc query wscsvc > ' & @TempDir & '\status.txt', "", @SW_HIDE)
    $var = FileRead(@TempDir & "\status.txt")
    $var2 = StringInStr($var, "STOPPED")
    ...
    ...

    [/autoit]

    Der Befehl sc (sc.exe) ist ab Windows XP im Sstemverzeichnis und ansonsten im RessourceKit zu finden. Da ich sichergehen muss, dasss der Dienst auch beendet wurde, bevor das Script weitermacht, ist SC ein sehr gutes Werkzeug dafür.

    <3 Jetzt, Hier, Immer <3

  • Hallo!

    hab damit einiges an praktischer Erfahrung, arbeite mit der Lösung
    net stop "Dienstname"

    das gefährlich ist aber sofort im Script weiterzumachen, das Betriebssystem braucht evtl. einen ganzen Moment bis der Dienst runtergefahren ist. (bei Oracle dauert das evtl. 2 Minuten, wenn da ne große DB rauf- oder runtergefahren wird)

    Zuerst mal suchen: (Registry: HKLM\SYSTEM\CurrentControlSET\Services
    welche EXE hinter dem Dienst steht (der Dienst ist ja technisch gesehen nur ein Trick, damit eine EXE (die keinerlei Bildschirmausgaben macht) dauernd läuft.
    Nach dem Absetzen des net stop Kontrollieren, ob die EXE weg ist.

    mit dem SC kann man übrigens nicht arbeiten, wenn der Dienst z.B. mit autoit programmiert ist und mit dem instsrv.exe und srvany.exe aus dem Ressource-Kit arbeitet!!

    hier mal ein paar Beispiele von mir:


    Func _schedulerrunter()
    $z=1

    while $z < 10
    $befehl='net stop "Prisma Scheduler"'
    Run($befehl, "", @SW_HIDE)

    sleep(5000)
    If ProcessExists("ndSchd32.exe") Then
    Else
    $z=11
    EndIf

    $z=$Z+1
    wend

    EndFunc


    Func _dfueactive()

    $dfue=ProcessExists("nmc32.exe")
    if $dfue <> 0 then
    Return 1
    else
    Return 0
    EndIf
    EndFunc


    für weitere Fragen steh ich gerne zur Verfügung.

    Grüße aus dem verregneten Spessart

    German