Voici une petite fonction permettant de modifier le mode de démarrage d'un service.
Dans le registre :
- Clé ... : HKLM\SYSTEM\CurrentControlSet\services\<NomDuService>
- Valeur : Start
► Afficher le texte_ServiceSetStartMode
Code : Tout sélectionner
; Examples
_ServiceSetStartMode('Dnscache', 'Disabled')
ConsoleWrite('_ServiceSetStartMode(Dnscache) @error : ' & @error & @CRLF & @CRLF)
_ServiceSetStartMode('Dnscache', 'Disaboule')
ConsoleWrite('_ServiceSetStartMode(Dnscache) @error : ' & @error & @CRLF)
; #FUNCTION# ====================================================================================================================
; Name .........: _ServiceSetStartMode()
; Description ..: Change Service StartMode
; Syntax .......: _ServiceSetStartMode($iServName, $iValue, $iComputer)
; Parameters....: $iServName : Service Name
; $iValue : Start Mode
; "Boot" Device driver started by the operating system loader
; (valid only for driver services).
; "System" Device driver started by the operating system initialization process.
; This value is valid only for driver services.
; "Automatic" Service to be started automatically by the service control manager
; during system startup.
; "Manual" Service to be started by the Service Control Manager when a process
; calls the StartService method.
; "Disabled" Service that cannot be started.
; $iComputer : Computer name (Default '.')
;
; Return values.: Success - Return 0
; Failure - Return @error = 1 to 24 : ChangeStartMode error code
; for more details see
; http://msdn.microsoft.com/en-us/library/windows/desktop/aa384896%28v=vs.85%29.aspx
; Return @error = 25 for invalid input param
; Return @error = 26 for ObjGet Error
; Return @error = 27 for ExecQuery Error
; ===============================================================================================================================
Func _ServiceSetStartMode($iServName = '', $iValue = '', $iComputer = '.')
;Params Check
Local $nRetVal, $oService, $StartModeValues = 'Boot/System/Automatic/Manual/Disabled'
If $iServName = '' Or $iValue = '' Then Return SetError(25)
If Not StringInStr($StartModeValues, $iValue) Then Return SetError(25)
;Open Service Object
Local $ObjWMI = ObjGet("winmgmts:\\" & $iComputer & "\root\cimv2")
If @error Then Return SetError(26)
;Obj Query service
Local $oColServ = $ObjWMI.ExecQuery('Select * from Win32_Service Where Name = "' & $iServName & '"')
If @error Then Return SetError(27)
;Update Service StartMode
For $oService In $oColServ
$nRetVal = $oService.ChangeStartMode($iValue)
Next
Return $nRetVal
EndFunc