Dienst pausieren
Hallo
ich hatte zu dem Thema schon einmal etwas gefragt.
Leider hat mich das nicht so richtig weiter gebracht.
Um einen Dienst zu pausieren und später wieder weiterlaufen zu lassen, habe
ich mit PHP eine Lösung gefunden.
Dort brauche ich auch keinerlei Admin-Rechte.
Es funktioniert:
Wenn ich dem Programm als Parameter auswahl pause mitgebe, wird der Dienst auf Pause gesetzt.
Wenn ich weiter mitgebe, wird er wieder gestartet.
So weit, so gut.
So möchte ich es gerne in VB haben.
Hier mal ein Testcode:
Mal abgesehen davon, dass ein Admin-Fenster aufgeht, was ich nicht haben möchte, funktioniert es nicht.
Habe schon etliche Sachen ausprobiert. Nix funzt.
Ich weiß, ich nerve vielleicht mit diesem Thema, aber ich weiß mir halt sonst nicht zu helfen.
noch zur Indo:
Der Dienst FttermService hat den Starttyp 'Manuell' und den Status 'wird ausgeführt'
Egal, ob auf dem lokalem System oder einem Server, der PHP-Source funzt.
ich hatte zu dem Thema schon einmal etwas gefragt.
Leider hat mich das nicht so richtig weiter gebracht.
Um einen Dienst zu pausieren und später wieder weiterlaufen zu lassen, habe
ich mit PHP eine Lösung gefunden.
Dort brauche ich auch keinerlei Admin-Rechte.
Es funktioniert:
$service = "FttermService";
if (!isset($auswahl)) { $auswahl = ""; }
echo "Name = " . shell_exec("powershell -EP Bypass (get-service $service).Name") . "<br>";
echo "displayName = " . shell_exec("powershell -EP Bypass (get-service $service).displayName") . "<br>";
echo "Status = " . shell_exec("powershell -EP Bypass (get-service $service).Status") . "<br>";
echo "Auswahl = $auswahl<br>";
if ($auswahl == "pause") {
shell_exec("powershell -EP Bypass (Suspend-service $service)");
echo "Status = " . shell_exec("powershell -EP Bypass (get-service $service).Status") . "<br>";
}
if ($auswahl == "weiter") {
shell_exec("powershell -EP Bypass (Resume-service $service)");
echo "Status = " . shell_exec("powershell -EP Bypass (get-service $service).Status") . "<br>";
}
Wenn ich dem Programm als Parameter auswahl pause mitgebe, wird der Dienst auf Pause gesetzt.
Wenn ich weiter mitgebe, wird er wieder gestartet.
So weit, so gut.
So möchte ich es gerne in VB haben.
Hier mal ein Testcode:
Sub Test()
Dim Dienst = "FttermService"
Dim services
Dim objService
services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select State from Win32_Service where Name = '" & Dienst & "'")
For Each objService In services
GetServiceState = objService.State
Next
if GetServiceState = "Running" then
WshShell = WScript.CreateObject("WScript.Shell")
wshshell.run "net send %computername% + Nachricht "
wshshell.run "C:\Windows\System32\sc.exe pause " & Dienst
end if
End Sub
Mal abgesehen davon, dass ein Admin-Fenster aufgeht, was ich nicht haben möchte, funktioniert es nicht.
Habe schon etliche Sachen ausprobiert. Nix funzt.
Ich weiß, ich nerve vielleicht mit diesem Thema, aber ich weiß mir halt sonst nicht zu helfen.
noch zur Indo:
Der Dienst FttermService hat den Starttyp 'Manuell' und den Status 'wird ausgeführt'
Egal, ob auf dem lokalem System oder einem Server, der PHP-Source funzt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 716572449
Url: https://administrator.de/contentid/716572449
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
2 Kommentare
Neuester Kommentar
Servus
Bitte lies dazu folgenden Post aufmerksam: Windows 2019 Server Berechtigungen für das starten und stoppen von Diensten vergeben
Also erst die Rechte für den User oder die Gruppe vergeben und danach in die Doku geguckt und folgendes in der Win32_Service Klasse gefunden Win32_Service PauseService() Method
womit man dann folgendes abfeuert
Fertig, gewusst wie, du musst nur ab und zu die Links auch lesen die man dir an die Hand gibt !
Grüße Uwe
Zitat von @nagita:
Um einen Dienst zu pausieren und später wieder weiterlaufen zu lassen, habe
ich mit PHP eine Lösung gefunden.
Dort brauche ich auch keinerlei Admin-Rechte.
Und warum, weil der PHP Dienst bei dir wohl schon elevated läuft oder in einer administrativen Gruppe Mitglied ist ( eigentlich ein Sicherheitstechnischer GAU) , deshalb ...Um einen Dienst zu pausieren und später wieder weiterlaufen zu lassen, habe
ich mit PHP eine Lösung gefunden.
Dort brauche ich auch keinerlei Admin-Rechte.
Mal abgesehen davon, dass ein Admin-Fenster aufgeht, was ich nicht haben möchte, funktioniert es nicht.
Du musst dem User der das Script ausführt nur die Berechtigungen zum Starten/Stoppen/Pausieren geben dann funktioniert das auch ohne Admin Rechte bzw. Elevation.Bitte lies dazu folgenden Post aufmerksam: Windows 2019 Server Berechtigungen für das starten und stoppen von Diensten vergeben
Also erst die Rechte für den User oder die Gruppe vergeben und danach in die Doku geguckt und folgendes in der Win32_Service Klasse gefunden Win32_Service PauseService() Method
womit man dann folgendes abfeuert
dim Dienst, services, objService
Dienst = "BlaBla"
services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_Service where Name = '" & Dienst & "'")
For Each objService In services
objService.PauseService
Next
Grüße Uwe