имеется скрипт. Но не работает регулярное выражение. Если служба запущена, то не определяет, а если остановлена, то норм.
Код:
#RequireAdmin
#include <Constants.au3>
$service = "dhcp"
$s = $service & " " & IsServiceInstalled($service) & @CRLF & "Статус: " & IsServiceRunning($service)
MsgBox(0, "", $s)
Func _StdOut($pid)
Local $data
ProcessWaitClose($pid)
$data = StdOutRead($pid)
If $data Then
Return $data
Else
MsgBox(0, "", "Не удалось получить вывод программы.")
Exit(1)
EndIf
EndFunc
Func IsServiceInstalled(Const $service)
Local $code = RunWait("sc.exe query " & $service)
If $code = 0 Then
Return "УСТАНОВЛЕНА"
Else
Return "НЕ УСТАНОВЛЕНА"
EndIf
EndFunc
Func IsServiceRunning(Const $service)
Local $pid = Run("sc.exe query " & $service, "", @SW_HIDE, $STDOUT_CHILD)
Local $data = _StdOut($pid)
If StringRegExp($data, "STATE[^\r\n]+RUNNING") Then
Return "ЗАПУЩЕНА"
ElseIf StringRegExp($data, "STATE[^\r\n]+STOPPED") Then
Return "ОСТАНОВЛЕНА"
Else
Return "Непонятно"
EndIf
EndFunc