Что нового

Проверка запущена ли служба и запуск ее если она не запущена

Tiberium6

Новичок
Сообщения
51
Репутация
0
Как проверить запущена ли служба? и если не запущена, запустить ее?
 

alroy

Новичок
Сообщения
9
Репутация
0
Думаю что могу предложить свои варианты (правда не уверен что самые хорошие и грамотные )


Код:
#cs
Функция _chesk_service
проверяет наличие сервиса в системе
@error = 0 найден
@error = 1 No WMI Objects Found for class: " & "Win32_Service"
@error = 2 не найден
#ce
Func _chesk_service($in_par)

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Service", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
   For $objItem In $colItems
   	
     if $objItem.Name == $in_par then
     	return true
		SetError(0)
     	else
    	 
     endif       
   Next
   return false
	SetError(2)
Else
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Service" )
SetError(1)
Endif

	
EndFunc

	
;	ConsoleWrite("Name: " & $objItem.Name)
;	ConsoleWrite("PathName: " & $objItem.PathName)
	



#cs
Функция _servise_rest() 
производит перезапуск  выбранной службы 
обязательно проверять значение @error

если @error = 0 нормально  

если @error = 1 ошибка 
если @error = 2 не отработала до конца то есть сервис остановлен но не запущен!! 
если @error = 3 не удалось остановить выбранный сервис 
#ce
Func _servise_rest($ServiceName)

SetError(1) 

$f_vopros = False

 Local $objShell = ObjCreate("Shell.Application") 


If $objShell.IsServiceRunning($ServiceName) Then
     ;MsgBox (0, "", "Сервис " & $ServiceName & " запущен!")

	If $objShell.ServiceStop($ServiceName, false) = 0 Then
	;	MsgBox (0, "", "НЕ удалось остановить сервис " & $ServiceName & "!")
			SetError(3) 
		Else
			MsgBox (0, "", "Сервис " & $ServiceName & " успешно остановлен!")
			$f_vopros = True
			 
	EndIf

	Else
	$f_vopros = True
		;MsgBox (0, "", "Сервис " & $ServiceName & " НЕ запущен!")
EndIf


Sleep(300)
	if $f_vopros = True Then
			If  $objShell.ServiceStart($ServiceName, false) = 0 Then
					;MsgBox (0, "", "НЕ удалось запустить сервис " & $ServiceName & "!")
					SetError(2)
				Else
					;MsgBox (0, "",  "Сервис " & $ServiceName & " успешно запущен!")
					SetError(0)
			EndIf
	EndIf
EndFunc

#cs
Функция  _service_start()

Запуск выбранного сервиса

обязателна проверка @error

если @error = 0 то хорошо
если @error = 1 то плохо сервис не запустился


#ce

Func _service_start($in_par)
Local $objShell = ObjCreate("Shell.Application") 
	If  $objShell.ServiceStart($in_par, false) = 0 Then
					;MsgBox (0, "", "НЕ удалось запустить сервис " & $in_par & "!")
					SetError(1)
					Return False
				Else
					;MsgBox (0, "",  "Сервис " & $in_par & " успешно запущен!")
					SetError(0)
					Return True
			EndIf

EndFunc


#cs
Функция  _service_stop()

Запуск выбранного сервиса

обязателна проверка @error

если @error = 0 то хорошо
если @error = 1 то плохо сервис не запустился


#ce

Func _service_stop($in_par)
Local $objShell = ObjCreate("Shell.Application") 
	If  $objShell.ServiceStop($in_par, false) = 0 Then
					;MsgBox (0, "", "НЕ удалось запустить сервис " & $in_par & "!")
					SetError(1)
					Return False
				Else
					;MsgBox (0, "",  "Сервис " & $in_par & " успешно запущен!")
					SetError(0)
					Return True
			EndIf

EndFunc


#cs
Функция проверки запущен ли сервис!!
_is_servis_runing

#ce
Func _is_servis_runing($in_par)
Local $objShell = ObjCreate("Shell.Application") 

If $objShell.IsServiceRunning($in_par) Then
     ;MsgBox (0, "", "Сервис " & $in_par & " запущен!")
		Return True

Else
	Return False
		;MsgBox (0, "", "Сервис " & $in_par & " НЕ запущен!")
EndIf


EndFunc



перетащил из vbs
 
Верх