Hi @all
Ich möchte einen Dienst mit SC über ein Script erstellen. Leider blicke nicht so recht mit den möglichen Befehlen durch Da gibts ja den Run/Runwait, _RunDos, RunAs/RunAsWait, dann kommt noch das @ComSpec dazu und ich hab keine Ahnung was ich nehmen soll...
Ist der RunAs/RunAsWait nötig, wenn #RequireAdmin im Script vorhanden ist?
So schaut das Script bis jetzt aus...
Spoiler anzeigen
AutoIt
#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Meine GUI", 200, 114, 349, 249)
$Button1 = GUICtrlCreateButton("Starten", 6, 11, 187, 25)
$Button2 = GUICtrlCreateButton("Beenden", 5, 44, 187, 25)
$Button3 = GUICtrlCreateButton("Exit", 5, 76, 187, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_ServiceStartStop(1)
Case $Button2
_ServiceStartStop()
Case $Button3
Exit
EndSwitch
WEnd
Func _ServiceStartStop($sFlag = 0)
If $sFlag = 1 Then
If _IsServiceRunning('Abhängigkeit') = True Then
If _IsServiceRunning('MyService') = False Then
RunWait(@ComSpec & ' /c sc.exe create MyService type= "own" start= "system" binpath= "' & @SystemDir & '\drivers\my.SYS" DisplayName= "MyService"', @SystemDir, @SW_HIDE)
If Not @error Then
RunWait(@ComSpec & ' /c sc.exe config "MyService" depend= "Abhängigkeit"', @SystemDir, @SW_HIDE)
RunWait(@ComSpec & ' /c sc.exe start MyService', @SystemDir, @SW_HIDE)
MsgBox(64, "Information", "Ist gestartet.", 0, $Form1)
Else
MsgBox(64, "Information", "Kann nicht gestartet werden.", 0, $Form1)
EndIf
Else
MsgBox(64, "Information", "Läuft bereits...", 0, $Form1)
EndIf
Else
MsgBox(64, "Information", "Abhängigkeit fehlt...", 0, $Form1)
EndIf
Else
If _IsServiceRunning('MyService') = True Then
RunWait(@ComSpec & " /c sc.exe stop MyService", @SystemDir, @SW_HIDE)
If Not @error Then
RunWait(@ComSpec & " /c sc.exe delete MyService", @SystemDir, @SW_HIDE)
MsgBox(64, "Information", "Erfolgreich beendet...", 0, $Form1)
Else
MsgBox(64, "Information", "Kritischer Fehler!" & @CRLF & "Kann nicht beendet werden.", 0, $Form1)
EndIf
Else
MsgBox(64, "Information", "Ist schon beendet...", 0, $Form1)
EndIf
EndIf
Func _IsServiceRunning($sService)
Local $oShell = ObjCreate('shell.application')
If @error Then
Return SetError(1, 0, False)
EndIf
Return $oShell.IsServiceRunning($sService)
EndFunc ;==>_IsServiceRunning
Alles anzeigen
Danke schonmal...